You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by dg...@hyperreal.org on 1997/12/23 21:36:20 UTC
cvs commit: apachen/src/main util_snprintf.c
dgaudet 97/12/23 12:36:19
Modified: . STATUS
src CHANGES
src/main util_snprintf.c
Log:
Fix ap_snprintf to do something reasonable when len == 0. When len == 0 it
now returns 0 without writing anything. Previously it would behave like
sprintf().
Reviewed by: Jim Jagielski, Ken Coar
Revision Changes Path
1.21 +1 -4 apachen/STATUS
Index: STATUS
===================================================================
RCS file: /export/home/cvs/apachen/STATUS,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- STATUS 1997/12/23 20:33:38 1.20
+++ STATUS 1997/12/23 20:36:15 1.21
@@ -51,12 +51,9 @@
* Dean's [PATCH] two bugs in mod_autoindex
* Igor Tatarinov's Re: A tiny correction and a question on writev_it_all
* Dean's [PATCH] more useful warning message for fcntl() lock failure
+ * Dean's [PATCH] ap_snprintf should be more sane (fwd)
Available:
-
- * Dean's [PATCH] ap_snprintf should be more sane (fwd)
- <Pi...@twinlark.arctic.org>
- Status: Dean +1, Jim +1, Ken +1
* Dean's [PATCH] Re: [BUGFIXES] Wrong GID for PID file and UMASK for logs
<Pi...@twinlark.arctic.org>
1.539 +4 -0 apachen/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apachen/src/CHANGES,v
retrieving revision 1.538
retrieving revision 1.539
diff -u -r1.538 -r1.539
--- CHANGES 1997/12/23 20:33:40 1.538
+++ CHANGES 1997/12/23 20:36:17 1.539
@@ -1,4 +1,8 @@
Changes with Apache 1.3b4
+
+ *) ap_snprintf() with a len of 0 behaved like sprintf(). This is not
+ useful, and isn't what the standards require. Now it returns 0
+ and writes nothing. [Dean Gaudet]
*) When an error occurs in fcntl() locking suggest the user look up
the docs for LockFile. [Dean Gaudet]
1.11 +11 -10 apachen/src/main/util_snprintf.c
Index: util_snprintf.c
===================================================================
RCS file: /export/home/cvs/apachen/src/main/util_snprintf.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- util_snprintf.c 1997/10/22 20:29:54 1.10
+++ util_snprintf.c 1997/12/23 20:36:19 1.11
@@ -903,20 +903,15 @@
buffy od;
int cc;
- /*
- * First initialize the descriptor
- * Notice that if no length is given, we initialize buf_end to the
- * highest possible address.
- */
- od.buf_end = len ? &buf[len] : (char *) ~0;
+ /* save 1 byte for nul terminator, we assume len > 0 */
+ od.buf_end = &buf[len - 1];
od.nextb = buf;
/*
* Do the conversion
*/
cc = format_converter(&od, format, ap);
- if (len == 0 || od.nextb <= od.buf_end)
- *(od.nextb) = '\0';
+ *(od.nextb) = '\0';
if (ccp)
*ccp = cc;
}
@@ -927,8 +922,11 @@
int cc;
va_list ap;
+ if (len == 0)
+ return 0;
+
va_start(ap, format);
- strx_printv(&cc, buf, (len - 1), format, ap);
+ strx_printv(&cc, buf, len, format, ap);
va_end(ap);
return (cc);
}
@@ -939,7 +937,10 @@
{
int cc;
- strx_printv(&cc, buf, (len - 1), format, ap);
+ if (len == 0)
+ return 0;
+
+ strx_printv(&cc, buf, len, format, ap);
return (cc);
}