mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Update.
1999-09-24 Ulrich Drepper <drepper@cygnus.com> * nis/nss_nisplus/nisplus-parser.c (_nss_nisplus_parse_grent): Do not ovverwrite last group member with NULL pointer. Reported by Thomas Winder <thomas.winder@newlogic.at>.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
1999-09-24 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* nis/nss_nisplus/nisplus-parser.c (_nss_nisplus_parse_grent): Do
|
||||||
|
not ovverwrite last group member with NULL pointer.
|
||||||
|
Reported by Thomas Winder <thomas.winder@newlogic.at>.
|
||||||
|
|
||||||
1999-09-24 Andreas Jaeger <aj@suse.de>
|
1999-09-24 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
* stdio-common/tst-printf.c (main): Add a testcase for large
|
* stdio-common/tst-printf.c (main): Add a testcase for large
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
1999-09-25 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* condvar.c (pthread_cond_timedwait_relative): Never return with
|
||||||
|
EINTR. Patch by Andreas Schwab.
|
||||||
|
|
||||||
1999-09-19 Ulrich Drepper <drepper@cygnus.com>
|
1999-09-19 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
* signals.c (sigaction): Correct last patch. Don't select
|
* signals.c (sigaction): Correct last patch. Don't select
|
||||||
|
@ -76,6 +76,7 @@ pthread_cond_timedwait_relative(pthread_cond_t *cond,
|
|||||||
enqueue(&cond->__c_waiting, self);
|
enqueue(&cond->__c_waiting, self);
|
||||||
__pthread_unlock(&cond->__c_lock);
|
__pthread_unlock(&cond->__c_lock);
|
||||||
pthread_mutex_unlock(mutex);
|
pthread_mutex_unlock(mutex);
|
||||||
|
continue_waiting:
|
||||||
/* Set up a longjmp handler for the restart and cancel signals */
|
/* Set up a longjmp handler for the restart and cancel signals */
|
||||||
if (sigsetjmp(jmpbuf, 1) == 0) {
|
if (sigsetjmp(jmpbuf, 1) == 0) {
|
||||||
THREAD_SETMEM(self, p_signal_jmp, &jmpbuf);
|
THREAD_SETMEM(self, p_signal_jmp, &jmpbuf);
|
||||||
@ -113,13 +114,16 @@ pthread_cond_timedwait_relative(pthread_cond_t *cond,
|
|||||||
pthread_mutex_lock(mutex);
|
pthread_mutex_lock(mutex);
|
||||||
pthread_exit(PTHREAD_CANCELED);
|
pthread_exit(PTHREAD_CANCELED);
|
||||||
}
|
}
|
||||||
/* If not signaled: also remove ourselves and return an error code */
|
/* If not signaled: also remove ourselves and return an error code, but
|
||||||
|
only if the timeout has elapsed. If not, jsut continue waiting. */
|
||||||
if (THREAD_GETMEM(self, p_signal) == 0) {
|
if (THREAD_GETMEM(self, p_signal) == 0) {
|
||||||
|
if (retsleep != 0)
|
||||||
|
goto continue_waiting;
|
||||||
__pthread_lock(&cond->__c_lock, self);
|
__pthread_lock(&cond->__c_lock, self);
|
||||||
remove_from_queue(&cond->__c_waiting, self);
|
remove_from_queue(&cond->__c_waiting, self);
|
||||||
__pthread_unlock(&cond->__c_lock);
|
__pthread_unlock(&cond->__c_lock);
|
||||||
pthread_mutex_lock(mutex);
|
pthread_mutex_lock(mutex);
|
||||||
return retsleep == 0 ? ETIMEDOUT : EINTR;
|
return ETIMEDOUT;
|
||||||
}
|
}
|
||||||
/* Otherwise, return normally */
|
/* Otherwise, return normally */
|
||||||
pthread_mutex_lock(mutex);
|
pthread_mutex_lock(mutex);
|
||||||
|
@ -231,9 +231,9 @@ _nss_nisplus_parse_grent (nis_result *result, u_long entry, struct group *gr,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
if (room_left < sizeof (char *))
|
if (room_left < sizeof (char *))
|
||||||
goto no_more_room;
|
goto no_more_room;
|
||||||
room_left -= sizeof (char *);
|
room_left -= sizeof (char *);
|
||||||
gr->gr_mem[count] = line;
|
gr->gr_mem[count++] = line;
|
||||||
|
|
||||||
while (*line != '\0' && *line != ',' && !isspace (*line))
|
while (*line != '\0' && *line != ',' && !isspace (*line))
|
||||||
++line;
|
++line;
|
||||||
@ -248,13 +248,10 @@ _nss_nisplus_parse_grent (nis_result *result, u_long entry, struct group *gr,
|
|||||||
++line;
|
++line;
|
||||||
else
|
else
|
||||||
++line;
|
++line;
|
||||||
++count;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
gr->gr_mem[count+1] = NULL;
|
|
||||||
}
|
}
|
||||||
if (room_left < sizeof (char *))
|
if (room_left < sizeof (char *))
|
||||||
goto no_more_room;
|
goto no_more_room;
|
||||||
room_left -= sizeof (char *);
|
room_left -= sizeof (char *);
|
||||||
gr->gr_mem[count] = NULL;
|
gr->gr_mem[count] = NULL;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user