Bug 3040

Summary: sysdeps/unix/sysv/linux/openat.c
Product: glibc Reporter: M. MosG Gor. <mgorohovsky>
Component: libcAssignee: Ulrich Drepper <drepper.fsp>
Status: RESOLVED FIXED    
Severity: normal CC: che, glibc-bugs, lethalman88, vapier
Priority: P2 Flags: fweimer: security-
Version: unspecified   
Target Milestone: ---   
Host: i686-pc-linux-gnu Target: i686-pc-linux-gnu
Build: i686-pc-linux-gnu Last reconfirmed:
Attachments: A diff for the opeat.c file to fix the compilation.
The fixed openat.c file

Description M. MosG Gor. 2006-08-14 11:09:10 UTC
Can not compile CVS glibc 20060813 CVS HEAD

sysdeps/unix/sysv/linux/openat.c can not be compiled
with --enable-kernel=2.6.17 configure option:
  ...
../sysdeps/unix/sysv/linux/openat.c: In function '__OPENAT':
../sysdeps/unix/sysv/linux/openat.c:156: error: 'va_start' used in function with
fixed args
  ...

proposed solution: my diff for sysdeps/unix/sysv/linux/openat.c that
compiles and passes tests:

------------ CUT --------------------
--- openat.orig 2006-03-01 07:32:42.000000000 +0200                            
                                             
+++ openat.c.fixed      2006-04-30 19:15:52.000000000 +0300                    
                                             
@@ -27,6 +27,9 @@                                                              
                                             
 #include <sysdep-cancel.h>                                                    
                                             
 #include <not-cancel.h>                                                       
                                             
                                                                               
                                             
+#if !defined OPENAT                                                           
                                             
+# define OPENAT openat                                                        
                                             
+#endif                                                                        
                                             
                                                                               
                                             
 #if !defined OPENAT && !defined __ASSUME_ATFCTS                               
                                             
 # define OPENAT openat                                                        
                                             
@@ -70,11 +73,7 @@ int __have_atfcts;                                          
                                             
                                                                               
                                             
                                                                               
                                             
 int                                                                           
                                             
-OPENAT_NOT_CANCEL (fd, file, oflag, mode)                                     
                                             
-     int fd;                                                                  
                                             
-     const char *file;                                                        
                                             
-     int oflag;                                                               
                                             
-     mode_t mode;                                                             
                                             
+OPENAT_NOT_CANCEL (int fd, const char *file, int oflag, mode_t mode)          
                                             
 {                                                                             
                                             
                                                                               
                                             
   /* We have to add the O_LARGEFILE flag for openat64.  */                    
                                             
@@ -144,10 +143,7 @@ OPENAT_NOT_CANCEL (fd, file, oflag, mode                  
                                             
    the directory associated with FD.  If OFLAG includes O_CREAT, a            
                                             
    third argument is the file protection.  */                                 
                                             
 int                                                                           
                                             
-__OPENAT (fd, file, oflag)                                                    
                                             
-     int fd;                                                                  
                                             
-     const char *file;                                                        
                                             
-     int oflag;                                                               
                                             
+__OPENAT (int fd, const char *file, int oflag, ...)                           
                                             
 {                                                                             
                                             
   mode_t mode = 0;                                                            
                                             
   if (oflag & O_CREAT)                                                        
                                             
---------------------- CUT -------------------------------

CVS 20060814 CVS HEAD still has no other fix for this.
Comment 1 M. MosG Gor. 2006-08-14 11:10:23 UTC
Created attachment 1220 [details]
A diff for the opeat.c file to fix the compilation.

This is a hack. The real fix is needed.
Comment 2 M. MosG Gor. 2006-08-14 11:11:36 UTC
Created attachment 1221 [details]
The fixed openat.c file

The openat.c file after applying the patch.
Comment 3 Ulrich Drepper 2006-08-21 19:44:35 UTC
Fixed with a different patch upstream.
Comment 4 Mike Frysinger 2006-08-26 05:14:01 UTC
*** Bug 2873 has been marked as a duplicate of this bug. ***
Comment 5 Ulrich Drepper 2006-09-06 14:31:40 UTC
*** Bug 3170 has been marked as a duplicate of this bug. ***