manoj 99/11/03 23:24:24
Modified: src/lib/apr/file_io/unix readwrite.c
Log:
a rewrite of ap_fprintf that fixes a potential buffer overflow, a memory
leak, and more.
Revision Changes Path
1.15 +5 -15 apache-2.0/src/lib/apr/file_io/unix/readwrite.c
Index: readwrite.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/unix/readwrite.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -u -r1.14 -r1.15
--- readwrite.c 1999/10/24 19:23:55 1.14
+++ readwrite.c 1999/11/04 07:24:23 1.15
@@ -356,28 +356,18 @@
{
int cc;
va_list ap;
- ap_vformatter_buff_t vbuff;
char *buf;
- ap_ssize_t len;
+ int len;
buf = malloc(HUGE_STRING_LEN);
if (buf == NULL) {
return 0;
}
- /* save one byte for nul terminator */
- vbuff.curpos = buf;
- vbuff.endpos = buf + len - 1;
va_start(ap, format);
-#if 0
- cc = ap_vformatter(printf_flush, &vbuff, format, ap);
- va_end(ap);
- *vbuff.curpos = '\0';
-#endif
- vsprintf(buf, format, ap);
- len = strlen(buf);
- cc = ap_write(fptr, buf, &len);
+ len = ap_vsnprintf(buf, HUGE_STRING_LEN, format, ap);
+ cc = ap_puts(buf, fptr);
va_end(ap);
- return (cc == -1) ? len : cc;
+ free(buf);
+ return (cc == APR_SUCCESS) ? len : -1;
}
-