summaryrefslogtreecommitdiff
path: root/include/my_sys.h
diff options
context:
space:
mode:
authorunknown <cmiller@zippy.(none)>2006-05-01 22:10:50 -0400
committerunknown <cmiller@zippy.(none)>2006-05-01 22:10:50 -0400
commit3010890e589de89d2f5bb4c0e2c3a0b06b827b10 (patch)
treee1be3b9af9e1eb4a72abb369924831d5a8129301 /include/my_sys.h
parent8eb2b474b335973dcd2a2aa8c1fa5c097d46cc50 (diff)
downloadmariadb-git-3010890e589de89d2f5bb4c0e2c3a0b06b827b10.tar.gz
SECURITY FIX
Bug#17667: An attacker has the opportunity to bypass query logging. This adds a new, local-only printf format specifier to our *printf functions that allows us to print known-size buffers that must not be interpreted as NUL-terminated "strings." It uses this format-specifier to print to the log, thus fixing this problem. include/my_sys.h: Add prototype for my_memmem() . mysys/Makefile.am: Add reference to new file, my_memmem.c mysys/mf_iocache2.c: Add a "%.1234b" and "%.*b" percent-code. It takes a width, just like "%s", but unlike the string-indicator, it requires the width and doesn't stop printing at NUL characters. Also, simplify the code a bit. TODO: This code should be unified with the strings/my_vnsprintf.c code in the future. sql/sql_parse.cc: The query is not a C-string, but is a sized buffer, containing any character at all, which may include NUL characters. strings/my_vsnprintf.c: Add a "%.1234b" and "%.*b" percent-code. It takes a width, just like "%s", but unlike the string-indicator, it requires the width and doesn't stop printing at NUL characters. tests/Makefile.am: We may need some of our local functions. tests/mysql_client_test.c: Add a "%.1234b" and "%.*b" percent-code. It takes a width, just like "%s", but unlike the string-indicator, it requires the width and doesn't stop printing at NUL characters. mysql-test/t/mysql_client_test.opt: New BitKeeper file ``mysql-test/t/mysql_client_test.opt'' Add '--log' server parameter. mysys/my_memmem.c: New BitKeeper file ``mysys/my_memmem.c'' Implement memmem, a black-box work-alike of the GNU memmem(), which functions like strstr() but for arbitrary blocks of memory.
Diffstat (limited to 'include/my_sys.h')
-rw-r--r--include/my_sys.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/my_sys.h b/include/my_sys.h
index 44fe383bf4f..65a295ee39e 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -599,6 +599,11 @@ extern char *_my_strdup_with_length(const byte *from, uint length,
const char *sFile, uint uLine,
myf MyFlag);
+/* implemented in my_memmem.c */
+extern void *my_memmem(const void *haystack, size_t haystacklen,
+ const void *needle, size_t needlelen);
+
+
#ifdef __WIN__
extern int my_access(const char *path, int amode);
extern File my_sopen(const char *path, int oflag, int shflag, int pmode);