mirror of
https://github.com/samba-team/samba.git
synced 2025-02-23 09:57:40 +03:00
lib/util Use lib/util/util_str.c in common, including strequal()
strequal() is now implemented in terms of strcasecmp_m() which is tested in smbtorture and which does not talloc() for ASCII or non-ASCII comparions, and has an ASCII fast-path. Andrew Bartlett
This commit is contained in:
parent
86a62ab434
commit
2c32534d5b
@ -236,6 +236,6 @@ _PUBLIC_ bool strequal(const char *s1, const char *s2)
|
||||
if (!s1 || !s2)
|
||||
return false;
|
||||
|
||||
return strcasecmp(s1,s2) == 0;
|
||||
return strcasecmp_m(s1,s2) == 0;
|
||||
}
|
||||
|
||||
|
@ -5,11 +5,11 @@ common_util_sources = '''talloc_stack.c smb_threads.c xfile.c data_blob.c
|
||||
genrand.c fsusage.c blocking.c become_daemon.c
|
||||
signal.c system.c params.c util.c util_id.c util_net.c
|
||||
util_strlist.c idtree.c debug.c fault.c base64.c
|
||||
util_str_common.c substitute.c'''
|
||||
util_str.c util_str_common.c substitute.c'''
|
||||
|
||||
common_util_headers = 'debug.h'
|
||||
common_util_public_deps = 'talloc pthread LIBCRYPTO'
|
||||
s4_util_sources = '''dprintf.c ms_fnmatch.c parmlist.c util_str.c'''
|
||||
s4_util_sources = '''dprintf.c ms_fnmatch.c parmlist.c'''
|
||||
s4_util_deps = 'DYNCONFIG'
|
||||
s4_util_public_deps = 'talloc CHARSET execinfo uid_wrapper'
|
||||
s4_util_public_headers = 'attr.h byteorder.h data_blob.h memory.h safe_string.h time.h talloc_stack.h xfile.h dlinklist.h util.h'
|
||||
|
@ -457,6 +457,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \
|
||||
lib/bitmap.o lib/dprintf.o $(UTIL_REG_OBJ) \
|
||||
lib/wins_srv.o \
|
||||
lib/util_str.o ../lib/util/util_str_common.o \
|
||||
../lib/util/util_str.o \
|
||||
../lib/util/base64.o lib/util_sid.o \
|
||||
../lib/util/charset/util_unistr.o \
|
||||
../lib/util/charset/util_unistr_w.o ../lib/util/charset/codepoints.o ../lib/util/charset/util_str.o lib/util_file.o \
|
||||
|
@ -178,21 +178,6 @@ int StrnCaseCmp(const char *s, const char *t, size_t len)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare 2 strings.
|
||||
*
|
||||
* @note The comparison is case-insensitive.
|
||||
**/
|
||||
bool strequal(const char *s1, const char *s2)
|
||||
{
|
||||
if (s1 == s2)
|
||||
return(true);
|
||||
if (!s1 || !s2)
|
||||
return(false);
|
||||
|
||||
return(StrCaseCmp(s1,s2)==0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare 2 strings up to and including the nth char.
|
||||
*
|
||||
@ -327,77 +312,6 @@ bool trim_char(char *s,char cfront,char cback)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
Safe string copy into a known length string. maxlength does not
|
||||
include the terminating zero.
|
||||
**/
|
||||
|
||||
char *safe_strcpy_fn(char *dest,
|
||||
const char *src,
|
||||
size_t maxlength)
|
||||
{
|
||||
size_t len;
|
||||
|
||||
if (!dest) {
|
||||
smb_panic("ERROR: NULL dest in safe_strcpy");
|
||||
}
|
||||
|
||||
if (!src) {
|
||||
*dest = 0;
|
||||
return dest;
|
||||
}
|
||||
|
||||
len = strnlen(src, maxlength+1);
|
||||
|
||||
if (len > maxlength) {
|
||||
DEBUG(0,("ERROR: string overflow by "
|
||||
"%lu (%lu - %lu) in safe_strcpy [%.50s]\n",
|
||||
(unsigned long)(len-maxlength), (unsigned long)len,
|
||||
(unsigned long)maxlength, src));
|
||||
len = maxlength;
|
||||
}
|
||||
|
||||
memmove(dest, src, len);
|
||||
dest[len] = 0;
|
||||
return dest;
|
||||
}
|
||||
|
||||
/**
|
||||
Safe string cat into a string. maxlength does not
|
||||
include the terminating zero.
|
||||
**/
|
||||
char *safe_strcat_fn(char *dest,
|
||||
const char *src,
|
||||
size_t maxlength)
|
||||
{
|
||||
size_t src_len, dest_len;
|
||||
|
||||
if (!dest) {
|
||||
smb_panic("ERROR: NULL dest in safe_strcat");
|
||||
}
|
||||
|
||||
if (!src)
|
||||
return dest;
|
||||
|
||||
src_len = strnlen(src, maxlength + 1);
|
||||
dest_len = strnlen(dest, maxlength + 1);
|
||||
|
||||
if (src_len + dest_len > maxlength) {
|
||||
DEBUG(0,("ERROR: string overflow by %d "
|
||||
"in safe_strcat [%.50s]\n",
|
||||
(int)(src_len + dest_len - maxlength), src));
|
||||
if (maxlength > dest_len) {
|
||||
memcpy(&dest[dest_len], src, maxlength - dest_len);
|
||||
}
|
||||
dest[maxlength] = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memcpy(&dest[dest_len], src, src_len);
|
||||
dest[dest_len + src_len] = 0;
|
||||
return dest;
|
||||
}
|
||||
|
||||
/**
|
||||
Like strncpy but always null terminates. Make sure there is room!
|
||||
The variable n should always be one less than the available size.
|
||||
|
Loading…
x
Reference in New Issue
Block a user