Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
openSUSE:12.2:PowerPC
libjpeg-turbo
libjpeg-ocloexec.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File libjpeg-ocloexec.patch of Package libjpeg-turbo
This patch causes libjpeg to open all files with O_CLOEXEC the "e" fopen mode is a glibc/linux specific feature hence not suitable for other OS. Note that it is NOT HANDLED GRACEFULLY on kernels older than 2.6.23 or glibc < 2.7.x and WILL segfault. The other alternative, using fcntl with FD_CLOEXEC is NOT enough to prevent race conditions. --- wrjpgcom.c.orig +++ wrjpgcom.c @@ -35,15 +35,15 @@ extern void * malloc (); #endif #ifdef DONT_USE_B_MODE /* define mode parameters for fopen() */ -#define READ_BINARY "r" -#define WRITE_BINARY "w" +#define READ_BINARY "re" +#define WRITE_BINARY "we" #else #ifdef VMS /* VMS is very nonstandard */ #define READ_BINARY "rb", "ctx=stm" #define WRITE_BINARY "wb", "ctx=stm" #else /* standard ANSI-compliant case */ -#define READ_BINARY "rb" -#define WRITE_BINARY "wb" +#define READ_BINARY "rbe" +#define WRITE_BINARY "wbe" #endif #endif @@ -439,7 +439,7 @@ main (int argc, char **argv) keep_COM = 0; } else if (keymatch(arg, "cfile", 2)) { if (++argn >= argc) usage(); - if ((comment_file = fopen(argv[argn], "r")) == NULL) { + if ((comment_file = fopen(argv[argn], READ_BINARY)) == NULL) { fprintf(stderr, "%s: can't open %s\n", progname, argv[argn]); exit(EXIT_FAILURE); } --- cdjpeg.h.orig +++ cdjpeg.h @@ -156,15 +156,15 @@ EXTERN(FILE *) write_stdout JPP((void)); /* miscellaneous useful macros */ #ifdef DONT_USE_B_MODE /* define mode parameters for fopen() */ -#define READ_BINARY "r" -#define WRITE_BINARY "w" +#define READ_BINARY "re" +#define WRITE_BINARY "we" #else #ifdef VMS /* VMS is very nonstandard */ #define READ_BINARY "rb", "ctx=stm" #define WRITE_BINARY "wb", "ctx=stm" #else /* standard ANSI-compliant case */ -#define READ_BINARY "rb" -#define WRITE_BINARY "wb" +#define READ_BINARY "rbe" +#define WRITE_BINARY "wbe" #endif #endif --- rdswitch.c.orig +++ rdswitch.c @@ -92,7 +92,7 @@ read_quant_tables (j_compress_ptr cinfo, long val; unsigned int table[DCTSIZE2]; - if ((fp = fopen(filename, "r")) == NULL) { + if ((fp = fopen(filename, READ_BINARY)) == NULL) { fprintf(stderr, "Can't open table file %s\n", filename); return FALSE; } @@ -190,7 +190,7 @@ read_scan_script (j_compress_ptr cinfo, #define MAX_SCANS 100 /* quite arbitrary limit */ jpeg_scan_info scans[MAX_SCANS]; - if ((fp = fopen(filename, "r")) == NULL) { + if ((fp = fopen(filename, READ_BINARY)) == NULL) { fprintf(stderr, "Can't open scan definition file %s\n", filename); return FALSE; } --- bmp.c.orig +++ bmp.c @@ -257,7 +257,7 @@ int saveppm(char *filename, unsigned cha FILE *fs=NULL; int retcode=0; unsigned char *tempbuf=NULL; - if((fs=fopen(filename, "wb"))==NULL) _throw(strerror(errno)); + if((fs=fopen(filename, "wbe"))==NULL) _throw(strerror(errno)); if(fprintf(fs, "P6\n")<1) _throw("Write error"); if(fprintf(fs, "%d %d\n", w, h)<1) _throw("Write error"); if(fprintf(fs, "255\n")<1) _throw("Write error");
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor