]> git.pld-linux.org Git - packages/apache-mod_gzip.git/blame - mod_gzip-security.patch
- CAN-2003-0842, CAN-2003-0843, CAN-2003-0844 fix from SuSE
[packages/apache-mod_gzip.git] / mod_gzip-security.patch
CommitLineData
7da826b3
JB
1fixes CAN-2003-0842, CAN-2003-0843, CAN-2003-0844
2taken from SuSE apache-contrib package updates
3
4diff -purEbB mod_gzip-1.3.26.1a/mod_gzip.c mod_gzip-1.3.26.1a.fix/mod_gzip.c
5--- mod_gzip-1.3.26.1a/mod_gzip.c 2002-10-01 09:29:49.000000000 +0200
6+++ mod_gzip-1.3.26.1a.fix/mod_gzip.c 2004-01-13 17:16:05.000000000 +0100
7@@ -93,6 +93,10 @@
8
9 #define CORE_PRIVATE
10
11+#include <sys/types.h>
12+#include <sys/stat.h>
13+#include <fcntl.h>
14+
15 #include "httpd.h"
16 #include "http_config.h"
17 #include "http_core.h"
18@@ -1382,8 +1386,8 @@ int targetmaxlen
19 slash[1]=0;
20 }
21
22- sprintf(
23- target,
24+ snprintf(
25+ target, targetmaxlen,
26 "%s%s_%ld_%ld_%ld.wrk",
27 prefix,
28 slash,
29@@ -1394,8 +1398,8 @@ int targetmaxlen
30 }
31 else
32 {
33- sprintf(
34- target,
35+ snprintf(
36+ target, targetmaxlen,
37 "_%ld_%ld_%ld.wrk",
38 (long) process_id,
39 (long) thread_id,
40@@ -3631,7 +3635,7 @@ mod_gzip_set_temp_dir( cmd_parms *parms,
41 if ( ( *(mgc->temp_dir+(arglen-1)) != '\\' ) &&
42 ( *(mgc->temp_dir+(arglen-1)) != '/' ) )
43 {
44- mod_gzip_strcat( mgc->temp_dir, dirsep );
45+ strcat( mgc->temp_dir, dirsep );
46 }
47
48 rc = stat( mgc->temp_dir, &sbuf );
49@@ -3734,7 +3738,8 @@ static const char *mod_gzip_static_suffi
50 return "mod_gzip_static_suffix: suffix to long!";
51 }
52
53- mod_gzip_strcpy(mgc->suffix,arg1);
54+ strncpy(mgc->suffix,arg1,sizeof(mgc->suffix)-1);
55+ mgc->suffix[sizeof(mgc->suffix)-1] = '\0';
56 mgc->suffix_set = 1;
57 return NULL;
58 }
59@@ -5221,8 +5226,9 @@ mod_gzip_conf *dconf,
60 char *input_filename
61 )
62 {
63- FILE *ifh=0;
64- FILE *ofh=0;
65+ FILE *ifh=NULL;
66+ FILE *ofh=NULL;
67+ int ofd=-1;
68 int ofh_used=0;
69
70 int i=0;
71@@ -5763,7 +5769,7 @@ char *input_filename
72 send_as_is++;
73
74 #ifdef MOD_GZIP_USES_APACHE_LOGS
75- mod_gzip_strcat( lbuf, ":NO_200");
76+ strcat( lbuf, ":NO_200");
77 #endif
78 }
79
80@@ -5778,7 +5784,7 @@ char *input_filename
81 send_as_is++;
82
83 #ifdef MOD_GZIP_USES_APACHE_LOGS
84- mod_gzip_strcat( lbuf, ":RESPONSE_FIELD_EXCLUDED");
85+ strcat( lbuf, ":RESPONSE_FIELD_EXCLUDED");
86 #endif
87 }
88
89@@ -5793,7 +5799,7 @@ char *input_filename
90 send_as_is++;
91
92 #ifdef MOD_GZIP_USES_APACHE_LOGS
93- mod_gzip_strcat( lbuf, ":NO_BODY");
94+ strcat( lbuf, ":NO_BODY");
95 #endif
96 }
97
98@@ -5807,7 +5813,7 @@ char *input_filename
99 send_as_is++;
100
101 #ifdef MOD_GZIP_USES_APACHE_LOGS
102- mod_gzip_strcat( lbuf, ":UNKNOWN_TE_VALUE");
103+ strcat( lbuf, ":UNKNOWN_TE_VALUE");
104 #endif
105 }
106
107@@ -5821,7 +5827,7 @@ char *input_filename
108 send_as_is++;
109
110 #ifdef MOD_GZIP_USES_APACHE_LOGS
111- mod_gzip_strcat( lbuf, ":HAS_CE");
112+ strcat( lbuf, ":HAS_CE");
113 #endif
114 }
115
116@@ -5835,7 +5841,7 @@ char *input_filename
117 send_as_is++;
118
119 #ifdef MOD_GZIP_USES_APACHE_LOGS
120- mod_gzip_strcat( lbuf, ":NO_CONTENT_TYPE_IN_RESPONSE_HEADER");
121+ strcat( lbuf, ":NO_CONTENT_TYPE_IN_RESPONSE_HEADER");
122 #endif
123 }
124 else if ( !send_as_is )
125@@ -5891,7 +5897,7 @@ char *input_filename
126 send_as_is++;
127
128 #ifdef MOD_GZIP_USES_APACHE_LOGS
129- mod_gzip_strcat( lbuf, ":RESPONSE_CONTENT_TYPE_EXCLUDED");
130+ strcat( lbuf, ":RESPONSE_CONTENT_TYPE_EXCLUDED");
131 #endif
132 }
133 }
134@@ -6041,7 +6047,11 @@ char *input_filename
135 mod_gzip_printf( "%s: Call OUTPUT fopen(%s)...",cn,npp(output_filename1));
136 #endif
137
138- ofh = fopen( output_filename1, "wb" );
139+ if( (ofd = open(output_filename1, O_WRONLY | O_CREAT | O_EXCL)) < 0 || (ofh = fdopen(ofd ,"w")) == NULL)
140+ {
141+ ofd = -1;
142+ ofh = NULL;
143+ }
144
145 if ( !ofh )
146 {
147@@ -6875,7 +6885,7 @@ long content_length
148 mod_gzip_printf( "%s: HEADER: ADDING: lbuf=[%s]",cn,npp(lbuf));
149 #endif
150
151- mod_gzip_strcat( lbuf, "\r\n" );
152+ strcat( lbuf, "\r\n" );
153
154 if ( send_header )
155 {
156@@ -6888,7 +6898,7 @@ long content_length
157 mod_gzip_printf( "%s: HEADER: ADDING: lbuf=[%s]",cn,npp(lbuf));
158 #endif
159
160- mod_gzip_strcat( lbuf, "\r\n" );
161+ strcat( lbuf, "\r\n" );
162
163 if ( send_header )
164 {
165@@ -7283,12 +7293,12 @@ char *result_prefix_string
166 prefix_string = dummy_result_prefix_string;
167 }
168
169- sprintf( log_info,"%sOK", prefix_string );
170+ snprintf( log_info, sizeof(log_info),"%sOK", prefix_string );
171
172 ap_table_setn(
173 r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
174
175- sprintf( log_info,"%d", (int) input_size );
176+ snprintf( log_info, sizeof(log_info),"%d", (int) input_size );
177 ap_table_setn( r->notes,"mod_gzip_input_size",ap_pstrdup(r->pool,log_info));
178
179 #endif
180@@ -7302,7 +7312,7 @@ char *result_prefix_string
181
182 #ifdef MOD_GZIP_USES_APACHE_LOGS
183
184- sprintf( log_info,"%sDECLINED:NO_ILEN", prefix_string );
185+ snprintf( log_info, sizeof(log_info),"%sDECLINED:NO_ILEN", prefix_string );
186
187 ap_table_setn(
188 r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
189@@ -7329,7 +7339,7 @@ char *result_prefix_string
190
191 #ifdef MOD_GZIP_USES_APACHE_LOGS
192
193- sprintf( log_info,"%sDECLINED:TOO_SMALL", prefix_string );
194+ snprintf( log_info, sizeof(log_info),"%sDECLINED:TOO_SMALL", prefix_string );
195
196 ap_table_setn(
197 r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
198@@ -7364,7 +7374,7 @@ char *result_prefix_string
199
200 #ifdef MOD_GZIP_USES_APACHE_LOGS
201
202- sprintf( log_info,"%sDECLINED:TOO_BIG", prefix_string );
203+ snprintf( log_info, sizeof(log_info),"%sDECLINED:TOO_BIG", prefix_string );
204
205 ap_table_setn(
206 r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
207@@ -7396,7 +7406,8 @@ char *result_prefix_string
208 mod_gzip_printf( "%s: Input source is file[%s]",cn,npp(source));
209 #endif
210
211- mod_gzip_strcpy( gzp->input_filename, source );
212+ strncpy( gzp->input_filename, source, sizeof(gzp->input_filename)-1 );
213+ gzp->input_filename[sizeof(gzp->input_filename)-1] = '\0';
214
215 gzp->input_ismem = 0;
216 gzp->input_ismem_ibuf = 0;
217@@ -7537,10 +7548,10 @@ char *result_prefix_string
218
219 #ifdef MOD_GZIP_USES_APACHE_LOGS
220
221- sprintf( log_info,"%d", (int) output_size );
222+ snprintf( log_info, sizeof(log_info), "%d", (int) output_size );
223 ap_table_setn( r->notes,"mod_gzip_output_size",ap_pstrdup(r->pool,log_info));
224
225- sprintf( log_info,"%d", (int) compression_ratio );
226+ snprintf( log_info, sizeof(log_info),"%d", (int) compression_ratio );
227 ap_table_setn( r->notes,"mod_gzip_compression_ratio",ap_pstrdup(r->pool,log_info));
228
229 #endif
230@@ -7556,7 +7567,7 @@ char *result_prefix_string
231
232 #ifdef MOD_GZIP_USES_APACHE_LOGS
233
234- sprintf( log_info,"%sDECLINED:NO_OLEN", prefix_string );
235+ snprintf( log_info, sizeof(log_info),"%sDECLINED:NO_OLEN", prefix_string );
236
237 ap_table_setn(
238 r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
239@@ -7637,7 +7648,7 @@ char *result_prefix_string
240
241 #ifdef MOD_GZIP_USES_APACHE_LOGS
242
243- sprintf( log_info,"%sDECLINED:ORIGINAL_SMALLER", prefix_string );
244+ snprintf( log_info, sizeof(log_info),"%sDECLINED:ORIGINAL_SMALLER", prefix_string );
245
246 ap_table_setn(
247 r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
248@@ -7701,7 +7712,7 @@ char *result_prefix_string
249
250 #ifdef MOD_GZIP_USES_APACHE_LOGS
251
252- sprintf( log_info,"%sDECLINED:REOPEN_FAILED", prefix_string );
253+ snprintf( log_info, sizeof(log_info),"%sDECLINED:REOPEN_FAILED", prefix_string );
254
255 ap_table_setn(
256 r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
257@@ -7817,9 +7828,9 @@ char *result_prefix_string
258
259 #ifdef MOD_GZIP_DEBUG1
260 mod_gzip_translate_comerror( err, scratch2 );
261- sprintf( log_info,"%sTRANSMIT_ERROR:ISMEM:%d:%s", prefix_string, (int) err, scratch2 );
262+ snprintf( log_info, sizeof(log_info),"%sTRANSMIT_ERROR:ISMEM:%d:%s", prefix_string, (int) err, scratch2 );
263 #else
264- sprintf( log_info,"%sTRANSMIT_ERROR:ISMEM:%d", prefix_string, (int) err );
265+ snprintf( log_info, sizeof(log_info),"%sTRANSMIT_ERROR:ISMEM:%d", prefix_string, (int) err );
266 #endif
267
268 ap_table_setn( r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
269@@ -7911,9 +7922,9 @@ char *result_prefix_string
270
271 #ifdef MOD_GZIP_DEBUG1
272 mod_gzip_translate_comerror( err, scratch2 );
273- sprintf( log_info,"%sTRANSMIT_ERROR:%d:%s", prefix_string, (int) err, scratch2 );
274+ snprintf( log_info, sizeof(log_info),"%sTRANSMIT_ERROR:%d:%s", prefix_string, (int) err, scratch2 );
275 #else
276- sprintf( log_info,"%sTRANSMIT_ERROR:%d", prefix_string, (int) err );
277+ snprintf( log_info, sizeof(log_info),"%sTRANSMIT_ERROR:%d", prefix_string, (int) err );
278 #endif
279
280 ap_table_setn( r->notes,"mod_gzip_result",ap_pstrdup(r->pool,log_info));
281@@ -8036,10 +8047,10 @@ char *result_prefix_string
282
283 if ( finalize_stats )
284 {
285- sprintf( log_info,"%d", (int) output_size );
286+ snprintf( log_info, sizeof(log_info),"%d", (int) output_size );
287 ap_table_setn( r->notes,"mod_gzip_output_size",ap_pstrdup(r->pool,log_info));
288
289- sprintf( log_info,"%d", (int) compression_ratio );
290+ snprintf( log_info, sizeof(log_info),"%d", (int) compression_ratio );
291 ap_table_setn( r->notes,"mod_gzip_compression_ratio",ap_pstrdup(r->pool,log_info));
292 }
293
294@@ -8072,7 +8083,7 @@ char *mod_gzip_generate_vary_header(mod_
295
296 for(i=0;i<cfg->imap_total_entries;i++) {
297 if(cfg->imap[i].type == MOD_GZIP_IMAP_ISREQHEADER) {
298- mod_gzip_strncpy(name,cfg->imap[i].name,strstr(cfg->imap[i].name,":") - cfg->imap[i].name - 1);
299+ strncpy(name,cfg->imap[i].name,strstr(cfg->imap[i].name,":") - cfg->imap[i].name - 1);
300 *((const char **)ap_push_array(ary)) = ap_pstrdup(p,name);
301 }
302 }
303@@ -8097,8 +8108,10 @@ int mod_gzip_compress_file(request_rec *
304 gzc.result_code = 0;
305 gzc.bytes_out = 0;
306
307- mod_gzip_strcpy(gzc.input_filename, r->filename);
308- mod_gzip_strcpy(gzc.output_filename,dest);
309+ strncpy(gzc.input_filename, r->filename, sizeof(gzc.input_filename)-1);
310+ gzc.input_filename[sizeof(gzc.input_filename)-1] = '\0';
311+ strncpy(gzc.output_filename,dest, sizeof(gzc.output_filename)-1);
312+ gzc.output_filename[sizeof(gzc.output_filename)-1] = '\0';
313
314 rc = gzp_main(r,&gzc);
315
316diff -purEbB mod_gzip-1.3.26.1a/mod_gzip_debug.c mod_gzip-1.3.26.1a.fix/mod_gzip_debug.c
317--- mod_gzip-1.3.26.1a/mod_gzip_debug.c 2002-10-01 09:29:49.000000000 +0200
318+++ mod_gzip-1.3.26.1a.fix/mod_gzip_debug.c 2004-01-15 15:26:20.000000000 +0100
319@@ -98,6 +98,17 @@
320 #include "mod_gzip.h"
321 #include "mod_gzip_debug.h"
322
323+#ifndef WIN32
324+ #include <sys/types.h>
325+ #include <sys/stat.h>
326+ #define __USE_GNU
327+ #include <fcntl.h>
328+ #ifndef O_NOFOLLOW
329+ # warning System does not know O_NOFOLLOW
330+ #define O_NOFOLLOW 0400000
331+ #endif
332+#endif
333+
334 #ifdef MOD_GZIP_DEBUG1
335
336 server_rec *mod_gzip_server_now = 0;
337@@ -125,7 +137,7 @@ void mod_gzip_printf( const char *fmt, .
338
339 va_start( ap, fmt );
340
341- l = vsprintf( log_line, fmt, ap );
342+ l = vsnprintf( log_line, sizeof(log_line), fmt, ap );
343
344 va_end(ap);
345
346@@ -136,11 +148,39 @@ void mod_gzip_printf( const char *fmt, .
347
348 #else
349
350+int safe_reopen (char *file, int mode)
351+{
352+ struct stat st;
353+ struct stat st2;
354+ int fd;
355+
356+ if (lstat(file, &st) < 0)
357+ { // does not exit -> safe creation
358+ if ((fd = open(file, mode | O_EXCL | O_CREAT, 0600)) < 0)
359+ return(-1);
360+ }
361+ else
362+ { // it exists - allow only regular file which are not hardlinked
363+ if ((! S_ISREG(st.st_mode)) || st.st_nlink != 1)
364+ return(-1); // OK, lets open
365+ if ((fd = open(file, mode | O_NOFOLLOW)) < 0)
366+ return(-1);
367+ fstat(fd, &st2); // recheck that it's the same file ...
368+ if (st2.st_dev != st.st_dev || st2.st_ino != st.st_ino || st2.st_uid != st.st_uid || st2.st_nlink != 1)
369+ {
370+ close(fd);
371+ return(-1);
372+ }
373+ }
374+
375+ return(fd);
376+}
377+
378 void mod_gzip_printf( const char *fmt, ... )
379 {
380- int l;
381+ int l, fd;
382 char *p1;
383- FILE *log;
384+ FILE *mod_gzip_log_handle;
385
386 va_list ap;
387
388@@ -153,31 +193,28 @@ void mod_gzip_printf( const char *fmt, .
389 long pid = (long) getpid();
390 #endif
391
392+ memset(log_line, 0, sizeof(log_line));
393+
394 #ifdef WIN32
395 sprintf( logname, "c:\\temp\\t%ld.log",(long)pid);
396 #else
397- sprintf( logname, "/tmp/t%ld.log",(long)pid);
398+ sprintf( logname, "/tmp/t%ld.log", (long)pid);
399 #endif
400
401- log = fopen( logname,"a" );
402-
403- if ( !log )
404- {
405- return;
406- }
407+ fd = safe_reopen(logname, O_APPEND);
408+ mod_gzip_log_handle = fdopen(fd, "a");
409
410 va_start( ap, fmt );
411
412- l = vsprintf(log_line, fmt, ap);
413+ l = vsnprintf(log_line, sizeof(log_line), fmt, ap);
414
415 p1=log_line;
416 while((*p1!=0)&&(*p1!=13)&&(*p1!=10)) p1++;
417 *p1=0;
418
419- fprintf( log, "%s\n", log_line );
420-
421- fclose( log );
422+ fprintf( mod_gzip_log_handle, "%s\n", log_line );
423
424+ fclose( mod_gzip_log_handle );
425 va_end(ap);
426
427 return;
428@@ -305,103 +342,103 @@ int mod_gzip_log_comerror( request_rec *
429
430 if ( error == WSANOTINITIALISED )
431 {
432- sprintf(b[0],"%s * WSANOTINITIALISED",p);
433- sprintf(b[1],"%s * A successful WSAStartup() must occur",p);
434- sprintf(b[2],"%s * before using this WINSOCK API call.",p);
435+ snprintf(b[0],sizeof(b[0]),"%s * WSANOTINITIALISED",p);
436+ snprintf(b[1],sizeof(b[1]),"%s * A successful WSAStartup() must occur",p);
437+ snprintf(b[2],sizeof(b[2]),"%s * before using this WINSOCK API call.",p);
438 }
439 else if ( error == WSAENETDOWN )
440 {
441- sprintf(b[0],"%s * WSAENETDOWN",p);
442- sprintf(b[1],"%s * The Windows Sockets implementation has detected",p);
443- sprintf(b[2],"%s * that the network subsystem has failed.",p);
444+ snprintf(b[0],sizeof(b[0]),"%s * WSAENETDOWN",p);
445+ snprintf(b[1],sizeof(b[1]),"%s * The Windows Sockets implementation has detected",p);
446+ snprintf(b[2],sizeof(b[2]),"%s * that the network subsystem has failed.",p);
447 }
448 else if ( error == WSAENOTCONN )
449 {
450- sprintf(b[0],"%s * WSAENOTCONN",p);
451- sprintf(b[1],"%s * The socket is not connected.",p);
452+ snprintf(b[0],sizeof(b[0]),"%s * WSAENOTCONN",p);
453+ snprintf(b[1],sizeof(b[1]),"%s * The socket is not connected.",p);
454 }
455 else if ( error == WSAEINTR )
456 {
457- sprintf(b[0],"%s * WSAEINTR",p);
458- sprintf(b[1],"%s * The (blocking) call was cancelled",p);
459- sprintf(b[2],"%s * via WSACancelBlockingCall()",p);
460+ snprintf(b[0],sizeof(b[0]),"%s * WSAEINTR",p);
461+ snprintf(b[1],sizeof(b[1]),"%s * The (blocking) call was cancelled",p);
462+ snprintf(b[2],sizeof(b[2]),"%s * via WSACancelBlockingCall()",p);
463 }
464 else if ( error == WSAEINPROGRESS )
465 {
466- sprintf(b[0],"%s * WSAEINPROGRESS",p);
467- sprintf(b[1],"%s * A blocking Windows Sockets operation",p);
468- sprintf(b[2],"%s * is in progress.",p);
469+ snprintf(b[0],sizeof(b[0]),"%s * WSAEINPROGRESS",p);
470+ snprintf(b[1],sizeof(b[1]),"%s * A blocking Windows Sockets operation",p);
471+ snprintf(b[2],sizeof(b[2]),"%s * is in progress.",p);
472 }
473 else if ( error == WSAENOTSOCK )
474 {
475- sprintf(b[0],"%s * WSAENOTSOCK",p);
476- sprintf(b[1],"%s * The descriptor is not a socket.",p);
477+ snprintf(b[0],sizeof(b[0]),"%s * WSAENOTSOCK",p);
478+ snprintf(b[1],sizeof(b[1]),"%s * The descriptor is not a socket.",p);
479 }
480 else if ( error == WSAEOPNOTSUPP )
481 {
482- sprintf(b[0],"%s * WSAEOPNOTSUPP",p);
483- sprintf(b[1],"%s * MSG_OOB was specified, but the socket is",p);
484- sprintf(b[2],"%s * not of type SOCK_STREAM.",p);
485+ snprintf(b[0],sizeof(b[0]),"%s * WSAEOPNOTSUPP",p);
486+ snprintf(b[1],sizeof(b[1]),"%s * MSG_OOB was specified, but the socket is",p);
487+ snprintf(b[2],sizeof(b[2]),"%s * not of type SOCK_STREAM.",p);
488 }
489 else if ( error == WSAESHUTDOWN )
490 {
491- sprintf(b[0],"%s * WSAESHUTDOWN",p);
492- sprintf(b[1],"%s * The socket has been shutdown.",p);
493+ snprintf(b[0],sizeof(b[0]),"%s * WSAESHUTDOWN",p);
494+ snprintf(b[1],sizeof(b[1]),"%s * The socket has been shutdown.",p);
495 }
496 else if ( error == WSAEWOULDBLOCK )
497 {
498- sprintf(b[0],"%s * WSAEWOULDBLOCK",p);
499- sprintf(b[1],"%s * The socket is marked as non-blocking",p);
500- sprintf(b[2],"%s * and receive operation would block.",p);
501+ snprintf(b[0],sizeof(b[0]),"%s * WSAEWOULDBLOCK",p);
502+ snprintf(b[1],sizeof(b[1]),"%s * The socket is marked as non-blocking",p);
503+ snprintf(b[2],sizeof(b[2]),"%s * and receive operation would block.",p);
504 }
505 else if ( error == WSAEMSGSIZE )
506 {
507- sprintf(b[0],"%s * WSAEMSGSIZE",p);
508- sprintf(b[1],"%s * The datagram was too large to",p);
509- sprintf(b[2],"%s * fit into the specified buffer.",p);
510+ snprintf(b[0],sizeof(b[0]),"%s * WSAEMSGSIZE",p);
511+ snprintf(b[1],sizeof(b[1]),"%s * The datagram was too large to",p);
512+ snprintf(b[2],sizeof(b[2]),"%s * fit into the specified buffer.",p);
513 }
514 else if ( error == WSAEINVAL )
515 {
516- sprintf(b[0],"%s * WSAEINVAL",p);
517- sprintf(b[1],"%s * The socket has not been bound with bind().",p);
518+ snprintf(b[0],sizeof(b[0]),"%s * WSAEINVAL",p);
519+ snprintf(b[1],sizeof(b[1]),"%s * The socket has not been bound with bind().",p);
520 }
521 else if ( error == WSAECONNABORTED )
522 {
523- sprintf(b[0],"%s * WSAECONNABORTED",p);
524- sprintf(b[1],"%s * The virtual circuit was aborted",p);
525- sprintf(b[2],"%s * due to timeout or other failure.",p);
526+ snprintf(b[0],sizeof(b[0]),"%s * WSAECONNABORTED",p);
527+ snprintf(b[1],sizeof(b[1]),"%s * The virtual circuit was aborted",p);
528+ snprintf(b[2],sizeof(b[2]),"%s * due to timeout or other failure.",p);
529 }
530 else if ( error == WSAECONNRESET )
531 {
532- sprintf(b[0],"%s * WSAECONNRESET",p);
533- sprintf(b[1],"%s * The virtual circuit was reset by the remote side.",p);
534+ snprintf(b[0],sizeof(b[0]),"%s * WSAECONNRESET",p);
535+ snprintf(b[1],sizeof(b[1]),"%s * The virtual circuit was reset by the remote side.",p);
536 }
537 else
538 {
539- sprintf(b[0],"%s * WSA????",p);
540- sprintf(b[1],"%s * Unexpected WINSOCK error code %d",p,error);
541+ snprintf(b[0],sizeof(b[0]),"%s * WSA????",p);
542+ snprintf(b[1],sizeof(b[1]),"%s * Unexpected WINSOCK error code %d",p,error);
543 }
544
545 #else
546
547- if ( error == EBADF ) sprintf(b[0],"%s * EBADF", p );
548- else if ( error == EAGAIN ) sprintf(b[0],"%s * EAGAIN",p );
549- else if ( error == EDQUOT ) sprintf(b[0],"%s * EDQUOT",p );
550- else if ( error == EFAULT ) sprintf(b[0],"%s * EFAULT",p );
551- else if ( error == EFBIG ) sprintf(b[0],"%s * EFBIG", p );
552- else if ( error == EINTR ) sprintf(b[0],"%s * EINTR", p );
553- else if ( error == EINVAL ) sprintf(b[0],"%s * EINVAL",p );
554- else if ( error == EIO ) sprintf(b[0],"%s * EIO", p );
555- else if ( error == ENOSPC ) sprintf(b[0],"%s * ENOSPC",p );
556- else if ( error == ENXIO ) sprintf(b[0],"%s * ENXIO", p );
557- else if ( error == EPIPE ) sprintf(b[0],"%s * EPIPE", p );
558- else if ( error == ERANGE ) sprintf(b[0],"%s * ERANGE",p );
559- else if ( error == EINVAL ) sprintf(b[0],"%s * EINVAL",p );
560- else if ( error == EWOULDBLOCK ) sprintf(b[0],"%s * EWOULDBLOCK",p );
561+ if ( error == EBADF ) snprintf(b[0],sizeof(b[0]),"%s * EBADF", p );
562+ else if ( error == EAGAIN ) snprintf(b[0],sizeof(b[0]),"%s * EAGAIN",p );
563+ else if ( error == EDQUOT ) snprintf(b[0],sizeof(b[0]),"%s * EDQUOT",p );
564+ else if ( error == EFAULT ) snprintf(b[0],sizeof(b[0]),"%s * EFAULT",p );
565+ else if ( error == EFBIG ) snprintf(b[0],sizeof(b[0]),"%s * EFBIG", p );
566+ else if ( error == EINTR ) snprintf(b[0],sizeof(b[0]),"%s * EINTR", p );
567+ else if ( error == EINVAL ) snprintf(b[0],sizeof(b[0]),"%s * EINVAL",p );
568+ else if ( error == EIO ) snprintf(b[0],sizeof(b[0]),"%s * EIO", p );
569+ else if ( error == ENOSPC ) snprintf(b[0],sizeof(b[0]),"%s * ENOSPC",p );
570+ else if ( error == ENXIO ) snprintf(b[0],sizeof(b[0]),"%s * ENXIO", p );
571+ else if ( error == EPIPE ) snprintf(b[0],sizeof(b[0]),"%s * EPIPE", p );
572+ else if ( error == ERANGE ) snprintf(b[0],sizeof(b[0]),"%s * ERANGE",p );
573+ else if ( error == EINVAL ) snprintf(b[0],sizeof(b[0]),"%s * EINVAL",p );
574+ else if ( error == EWOULDBLOCK ) snprintf(b[0],sizeof(b[0]),"%s * EWOULDBLOCK",p );
575
576 else
577 {
578- sprintf(b[0],"%s * E???? Unexpected error code %d",p,error);
579+ snprintf(b[0],sizeof(b[0]),"%s * E???? Unexpected error code %d",p,error);
580 }
581
582 #endif
This page took 0.271665 seconds and 4 git commands to generate.