aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-07-31 20:32:01 +0000
committerUlrich Drepper <drepper@redhat.com>2001-07-31 20:32:01 +0000
commitad71126b24491c31fd99b4ca8010cd1363f1c016 (patch)
treeb788d320c7c35e7b1eaca2e18973d55b3a5b2242 /sysdeps
parent34183f57d75b4e8b9ed6608f888f0f1e1ada8b34 (diff)
downloadglibc-ad71126b24491c31fd99b4ca8010cd1363f1c016.zip
glibc-ad71126b24491c31fd99b4ca8010cd1363f1c016.tar.gz
glibc-ad71126b24491c31fd99b4ca8010cd1363f1c016.tar.bz2
Update.
* sysdeps/unix/sysv/linux/cmsg_nxthdr.c (__cmsg_nxthdr): Correct test for cmsg struct size. * sysdeps/unix/sysv/linux/bits/socket.h (__cmsg_nxthdr): Likewise. * sysdeps/unix/sysv/linux/i386/makecontext.S: Remove unnecessary initializations. * libio/oldiopopen.c: Add lock for old_proc_file_chain access.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h4
-rw-r--r--sysdeps/unix/sysv/linux/cmsg_nxthdr.c4
-rw-r--r--sysdeps/unix/sysv/linux/i386/makecontext.S16
3 files changed, 4 insertions, 20 deletions
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index 0ec83cc..6ad4a5e 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -268,8 +268,8 @@ __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW
__cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
+ CMSG_ALIGN (__cmsg->cmsg_len));
- if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control
- + __mhdr->msg_controllen)
+ if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
+ + __mhdr->msg_controllen)
|| ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
> ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
/* No more entries. */
diff --git a/sysdeps/unix/sysv/linux/cmsg_nxthdr.c b/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
index 22daab5..b7de285 100644
--- a/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
+++ b/sysdeps/unix/sysv/linux/cmsg_nxthdr.c
@@ -29,8 +29,8 @@ __cmsg_nxthdr (struct msghdr *mhdr, struct cmsghdr *cmsg)
cmsg = (struct cmsghdr *) ((unsigned char *) cmsg
+ CMSG_ALIGN (cmsg->cmsg_len));
- if ((unsigned char *) (cmsg + 1) >= ((unsigned char *) mhdr->msg_control
- + mhdr->msg_controllen)
+ if ((unsigned char *) (cmsg + 1) > ((unsigned char *) mhdr->msg_control
+ + mhdr->msg_controllen)
|| ((unsigned char *) cmsg + CMSG_ALIGN (cmsg->cmsg_len)
> ((unsigned char *) mhdr->msg_control + mhdr->msg_controllen)))
/* No more entries. */
diff --git a/sysdeps/unix/sysv/linux/i386/makecontext.S b/sysdeps/unix/sysv/linux/i386/makecontext.S
index 1ca3233..56b5537 100644
--- a/sysdeps/unix/sysv/linux/i386/makecontext.S
+++ b/sysdeps/unix/sysv/linux/i386/makecontext.S
@@ -40,22 +40,6 @@ ENTRY(__makecontext)
movl oLINK(%eax), %ecx
movl %ecx, -4(%edx)
- /* Copy the FS and GS segment register. */
- xorl %ecx, %ecx
- movw %gs, %cx
- movl %ecx, oGS(%eax)
- xorl %ecx, %ecx
- movw %fs, %cx
- movl %ecx, oFS(%eax)
-
- /* We have separate floating-point register content memory on the
- stack. We use the __fpregs_mem block in the context. Set the
- links up correctly. */
- leal oFPREGSMEM(%eax), %ecx
- movl %ecx, oFPREGS(%eax)
- /* Save the floating-point context. */
- fnstenv (%ecx)
-
/* Remember the number of parameters for the exit handler since
it has to remove them. We store the number in the EBX register
which the function we will call must preserve. */