1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

s3-safe_string: Add checked_strlcpy()

This is strlcpy, just with an extra check of the parameters with
sizeof(), use only where that works.

Andrew Bartlett

Autobuild-User: Andrew Bartlett <abartlet@samba.org>
Autobuild-Date: Wed Mar 23 03:39:35 CET 2011 on sn-devel-104
This commit is contained in:
Andrew Bartlett 2011-03-22 21:03:59 +11:00
parent 1d22c3919d
commit d73db405f7
2 changed files with 13 additions and 1 deletions

View File

@ -144,6 +144,17 @@ size_t __unsafe_string_function_usage_here_char__(void);
? __unsafe_string_function_usage_here_size_t__() \
: srvstr_push_fn(base_ptr, smb_flags2, dest, src, dest_len, flags))
/* This allows the developer to choose to check the arguments to
strlcpy. if the compiler will optimize out function calls, then
use this to tell if we are have the correct size buffer (this works only
where sizeof() returns the size of the buffer, not the size of the
pointer), so stack and static variables only */
#define checked_strlcpy(dest, src, size) \
(sizeof(dest) != (size) \
? __unsafe_string_function_usage_here_size_t__() \
: strlcpy(dest, src, size))
#else
#define safe_strcpy safe_strcpy_fn
@ -153,6 +164,7 @@ size_t __unsafe_string_function_usage_here_char__(void);
#define clistr_push clistr_push_fn
#define clistr_pull clistr_pull_fn
#define srvstr_push srvstr_push_fn
#define checked_strlcpy strlcpy
#endif

View File

@ -238,7 +238,7 @@ DATA_BLOB negprot_spnego(TALLOC_CTX *ctx, struct smbd_server_connection *sconn)
memset(blob_out.data, '\0', 16);
safe_strcpy(unix_name, global_myname(), sizeof(unix_name)-1);
checked_strlcpy(unix_name, global_myname(), sizeof(unix_name));
strlower_m(unix_name);
push_ascii_nstring(dos_name, unix_name);
safe_strcpy((char *)blob_out.data, dos_name, 16);