diff options
author | Andrew Tridgell <tridge@samba.org> | 2006-09-01 04:23:24 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:16:59 -0500 |
commit | e424b054d1c9c4c6e1adb4ae7da8232766282c33 (patch) | |
tree | 7123af12d5ffd51cf1fbb9d0b9fbc3f9fd80dbd9 /source4/lib/charset | |
parent | f2c083169760db02e267e2ca673e09ff2493931f (diff) | |
download | samba-e424b054d1c9c4c6e1adb4ae7da8232766282c33.tar.gz samba-e424b054d1c9c4c6e1adb4ae7da8232766282c33.tar.xz samba-e424b054d1c9c4c6e1adb4ae7da8232766282c33.zip |
r17980: handle NULL arguments without crashing in strcasecmp_m() and
strncasecmp_m(). This makes the use of these functions in sorting
routines with RPC replies sane
(This used to be commit 93413f84502ff308e88947b9d3bdc9d219478935)
Diffstat (limited to 'source4/lib/charset')
-rw-r--r-- | source4/lib/charset/util_unistr.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source4/lib/charset/util_unistr.c b/source4/lib/charset/util_unistr.c index 80c1d3b125b..e6d929b4e58 100644 --- a/source4/lib/charset/util_unistr.c +++ b/source4/lib/charset/util_unistr.c @@ -123,6 +123,11 @@ _PUBLIC_ int strcasecmp_m(const char *s1, const char *s2) codepoint_t c1=0, c2=0; size_t size1, size2; + /* handle null ptr comparisons to simplify the use in qsort */ + if (s1 == s2) return 0; + if (s1 == NULL) return -1; + if (s2 == NULL) return 1; + while (*s1 && *s2) { c1 = next_codepoint(s1, &size1); c2 = next_codepoint(s2, &size2); @@ -202,6 +207,11 @@ _PUBLIC_ int strncasecmp_m(const char *s1, const char *s2, size_t n) codepoint_t c1=0, c2=0; size_t size1, size2; + /* handle null ptr comparisons to simplify the use in qsort */ + if (s1 == s2) return 0; + if (s1 == NULL) return -1; + if (s2 == NULL) return 1; + while (*s1 && *s2 && n) { n--; |