diff options
author | Andrew Bartlett <abartlet@samba.org> | 2007-07-19 04:00:32 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 15:01:11 -0500 |
commit | f8219ec5a8502975f347323900ff3245ff5222dc (patch) | |
tree | b80a2683164ccf4c7da7188c010abc340fd5f639 /source4/lib/appweb/ejs-2.0/mpr | |
parent | 3c097f3afb51f41abe2be6a5698dabba559b75fc (diff) | |
download | samba-f8219ec5a8502975f347323900ff3245ff5222dc.tar.gz samba-f8219ec5a8502975f347323900ff3245ff5222dc.tar.bz2 samba-f8219ec5a8502975f347323900ff3245ff5222dc.zip |
r23961: Allow SWAT to operate on x86_64 machines.
On machines with a 4 byte int, and a 8 byte pointer, the ESP could would fail.
The problem is that 0 != NULL. 0 is an int (4 bytes) and NULL is a
pointer (8), and this matters critically to varargs functions.
If a 0 was passed as the 'terminating' argument, then only 4 bytes
would be written to the stack, but va_arg(ap, char *) would try and
pull 8, reading uninitalised memory.
Andrew Bartlett
(This used to be commit 72ca8e3b2a45179b731790e6329b978b22ac1ec0)
Diffstat (limited to 'source4/lib/appweb/ejs-2.0/mpr')
-rw-r--r-- | source4/lib/appweb/ejs-2.0/mpr/mprString.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/source4/lib/appweb/ejs-2.0/mpr/mprString.c b/source4/lib/appweb/ejs-2.0/mpr/mprString.c index b688667bcc..d39fc8b746 100644 --- a/source4/lib/appweb/ejs-2.0/mpr/mprString.c +++ b/source4/lib/appweb/ejs-2.0/mpr/mprString.c @@ -232,8 +232,10 @@ static int mprCoreStrcat(MPR_LOC_DEC(ctx, loc), char **destp, int destMax, return required - 1; } -/******************************************************************************/ - +/***************************************************************************** + Note that this VARARGS function must be NULL (not 0, this must be a + pointer) terminated +*/ int mprStrcat(char *dest, int destMax, const char *delim, const char *src, ...) { va_list ap; @@ -249,8 +251,10 @@ int mprStrcat(char *dest, int destMax, const char *delim, const char *src, ...) return rc; } -/******************************************************************************/ - +/***************************************************************************** + Note that this VARARGS function must be NULL (not 0, this must be a + pointer) terminated +*/ int mprAllocStrcat(MPR_LOC_DEC(ctx, loc), char **destp, int destMax, const char *delim, const char *src, ...) { @@ -268,8 +272,10 @@ int mprAllocStrcat(MPR_LOC_DEC(ctx, loc), char **destp, int destMax, return rc; } -/******************************************************************************/ - +/***************************************************************************** + Note that this VARARGS function must be NULL (not 0, this must be a + pointer) terminated +*/ int mprReallocStrcat(MPR_LOC_DEC(ctx, loc), char **destp, int destMax, int existingLen, const char *delim, const char *src,...) { |