mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
Convert Samba3 to use the common lib/util/charset API
This removes calls to push_*_allocate() and pull_*_allocate(), as well as convert_string_allocate, as they are not in the common API To allow transition to a common charcnv in future, provide Samba4-like strupper functions in source3/lib/charcnv.c (the actual implementation remains distinct, but the API is now shared) Andrew Bartlett
This commit is contained in:
parent
4786a493f7
commit
3b3e21bd9b
@ -348,30 +348,23 @@ void init_iconv(void);
|
||||
size_t convert_string(charset_t from, charset_t to,
|
||||
void const *src, size_t srclen,
|
||||
void *dest, size_t destlen, bool allow_bad_conv);
|
||||
bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
void const *src, size_t srclen, void *dst,
|
||||
size_t *converted_size, bool allow_bad_conv);
|
||||
size_t unix_strupper(const char *src, size_t srclen, char *dest, size_t destlen);
|
||||
char *strdup_upper(const char *s);
|
||||
char *talloc_strdup_upper(TALLOC_CTX *ctx, const char *s);
|
||||
char *strupper_talloc(TALLOC_CTX *ctx, const char *s);
|
||||
size_t unix_strlower(const char *src, size_t srclen, char *dest, size_t destlen);
|
||||
char *strdup_lower(const char *s);
|
||||
char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s);
|
||||
char *strlower_talloc(TALLOC_CTX *ctx, const char *s);
|
||||
size_t ucs2_align(const void *base_ptr, const void *p, int flags);
|
||||
size_t push_ascii(void *dest, const char *src, size_t dest_len, int flags);
|
||||
size_t push_ascii_fstring(void *dest, const char *src);
|
||||
size_t push_ascii_nstring(void *dest, const char *src);
|
||||
bool push_ascii_allocate(char **dest, const char *src, size_t *converted_size);
|
||||
size_t pull_ascii(char *dest, const void *src, size_t dest_len, size_t src_len, int flags);
|
||||
size_t pull_ascii_fstring(char *dest, const void *src);
|
||||
size_t pull_ascii_nstring(char *dest, size_t dest_len, const void *src);
|
||||
size_t push_ucs2(const void *base_ptr, void *dest, const char *src, size_t dest_len, int flags);
|
||||
bool push_ucs2_allocate(smb_ucs2_t **dest, const char *src,
|
||||
size_t *converted_size);
|
||||
size_t push_utf8_fstring(void *dest, const char *src);
|
||||
bool push_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src,
|
||||
size_t *converted_size);
|
||||
bool push_utf8_allocate(char **dest, const char *src, size_t *converted_size);
|
||||
size_t pull_ucs2(const void *base_ptr, char *dest, const void *src, size_t dest_len, size_t src_len, int flags);
|
||||
size_t pull_ucs2_base_talloc(TALLOC_CTX *ctx,
|
||||
const void *base_ptr,
|
||||
|
@ -518,14 +518,12 @@ size_t convert_string(charset_t from, charset_t to,
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert between character sets, allocating a new buffer for the result.
|
||||
* Convert between character sets, allocating a new buffer using talloc for the result.
|
||||
*
|
||||
* @param ctx TALLOC_CTX to use to allocate with. If NULL use malloc.
|
||||
* (this is a bad interface and needs fixing. JRA).
|
||||
* @param srclen length of source buffer.
|
||||
* @param dest always set at least to NULL
|
||||
* @param converted_size set to the size of the allocated buffer on return
|
||||
* true
|
||||
* @parm converted_size set to the number of bytes occupied by the string in
|
||||
* the destination on success.
|
||||
* @note -1 is not accepted for srclen.
|
||||
*
|
||||
* @return true if new buffer was correctly allocated, and string was
|
||||
@ -535,11 +533,11 @@ size_t convert_string(charset_t from, charset_t to,
|
||||
*
|
||||
* I hate the goto's in this function. It's embarressing.....
|
||||
* There has to be a cleaner way to do this. JRA.
|
||||
**/
|
||||
*/
|
||||
bool convert_string_talloc(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
void const *src, size_t srclen, void *dst,
|
||||
size_t *converted_size, bool allow_bad_conv)
|
||||
|
||||
bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
void const *src, size_t srclen, void *dst,
|
||||
size_t *converted_size, bool allow_bad_conv)
|
||||
{
|
||||
size_t i_len, o_len, destlen = (srclen * 3) / 2;
|
||||
size_t retval;
|
||||
@ -576,7 +574,7 @@ bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
|
||||
if (descriptor == (smb_iconv_t)-1 || descriptor == (smb_iconv_t)0) {
|
||||
if (!conv_silent)
|
||||
DEBUG(0,("convert_string_allocate: Conversion not supported.\n"));
|
||||
DEBUG(0,("convert_string_talloc: Conversion not supported.\n"));
|
||||
errno = EOPNOTSUPP;
|
||||
return false;
|
||||
}
|
||||
@ -587,7 +585,7 @@ bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
if ((destlen*2)+2 < destlen) {
|
||||
/* wrapped ! abort. */
|
||||
if (!conv_silent)
|
||||
DEBUG(0, ("convert_string_allocate: destlen wrapped !\n"));
|
||||
DEBUG(0, ("convert_string_talloc: destlen wrapped !\n"));
|
||||
if (!ctx)
|
||||
SAFE_FREE(outbuf);
|
||||
errno = EOPNOTSUPP;
|
||||
@ -597,14 +595,10 @@ bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
}
|
||||
|
||||
/* +2 is for ucs2 null termination. */
|
||||
if (ctx) {
|
||||
ob = (char *)TALLOC_REALLOC(ctx, ob, destlen + 2);
|
||||
} else {
|
||||
ob = (char *)SMB_REALLOC(ob, destlen + 2);
|
||||
}
|
||||
ob = (char *)TALLOC_REALLOC(ctx, ob, destlen + 2);
|
||||
|
||||
if (!ob) {
|
||||
DEBUG(0, ("convert_string_allocate: realloc failed!\n"));
|
||||
DEBUG(0, ("convert_string_talloc: realloc failed!\n"));
|
||||
errno = ENOMEM;
|
||||
return false;
|
||||
}
|
||||
@ -623,7 +617,7 @@ bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
case EINVAL:
|
||||
reason="Incomplete multibyte sequence";
|
||||
if (!conv_silent)
|
||||
DEBUG(3,("convert_string_allocate: Conversion error: %s(%s)\n",reason,inbuf));
|
||||
DEBUG(3,("convert_string_talloc: Conversion error: %s(%s)\n",reason,inbuf));
|
||||
if (allow_bad_conv)
|
||||
goto use_as_is;
|
||||
break;
|
||||
@ -632,7 +626,7 @@ bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
case EILSEQ:
|
||||
reason="Illegal multibyte sequence";
|
||||
if (!conv_silent)
|
||||
DEBUG(3,("convert_string_allocate: Conversion error: %s(%s)\n",reason,inbuf));
|
||||
DEBUG(3,("convert_string_talloc: Conversion error: %s(%s)\n",reason,inbuf));
|
||||
if (allow_bad_conv)
|
||||
goto use_as_is;
|
||||
break;
|
||||
@ -640,11 +634,7 @@ bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
if (!conv_silent)
|
||||
DEBUG(0,("Conversion error: %s(%s)\n",reason,inbuf));
|
||||
/* smb_panic(reason); */
|
||||
if (ctx) {
|
||||
TALLOC_FREE(ob);
|
||||
} else {
|
||||
SAFE_FREE(ob);
|
||||
}
|
||||
TALLOC_FREE(ob);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -657,15 +647,11 @@ bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
*/
|
||||
if (o_len > 1024) {
|
||||
/* We're shrinking here so we know the +2 is safe from wrap. */
|
||||
if (ctx) {
|
||||
ob = (char *)TALLOC_REALLOC(ctx,ob,destlen + 2);
|
||||
} else {
|
||||
ob = (char *)SMB_REALLOC(ob,destlen + 2);
|
||||
}
|
||||
ob = (char *)TALLOC_REALLOC(ctx,ob,destlen + 2);
|
||||
}
|
||||
|
||||
if (destlen && !ob) {
|
||||
DEBUG(0, ("convert_string_allocate: out of memory!\n"));
|
||||
DEBUG(0, ("convert_string_talloc: out of memory!\n"));
|
||||
errno = ENOMEM;
|
||||
return false;
|
||||
}
|
||||
@ -763,35 +749,12 @@ bool convert_string_allocate(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert between character sets, allocating a new buffer using talloc for the result.
|
||||
*
|
||||
* @param srclen length of source buffer.
|
||||
* @param dest always set at least to NULL
|
||||
* @parm converted_size set to the number of bytes occupied by the string in
|
||||
* the destination on success.
|
||||
* @note -1 is not accepted for srclen.
|
||||
*
|
||||
* @return true if new buffer was correctly allocated, and string was
|
||||
* converted.
|
||||
*/
|
||||
bool convert_string_talloc(TALLOC_CTX *ctx, charset_t from, charset_t to,
|
||||
void const *src, size_t srclen, void *dst,
|
||||
size_t *converted_size, bool allow_bad_conv)
|
||||
{
|
||||
void **dest = (void **)dst;
|
||||
|
||||
*dest = NULL;
|
||||
return convert_string_allocate(ctx, from, to, src, srclen, dest,
|
||||
converted_size, allow_bad_conv);
|
||||
}
|
||||
|
||||
size_t unix_strupper(const char *src, size_t srclen, char *dest, size_t destlen)
|
||||
{
|
||||
size_t size;
|
||||
smb_ucs2_t *buffer;
|
||||
|
||||
if (!push_ucs2_allocate(&buffer, src, &size)) {
|
||||
if (!push_ucs2_talloc(NULL, &buffer, src, &size)) {
|
||||
return (size_t)-1;
|
||||
}
|
||||
|
||||
@ -801,70 +764,10 @@ size_t unix_strupper(const char *src, size_t srclen, char *dest, size_t destlen)
|
||||
}
|
||||
|
||||
size = convert_string(CH_UTF16LE, CH_UNIX, buffer, size, dest, destlen, True);
|
||||
free(buffer);
|
||||
TALLOC_FREE(buffer);
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
strdup() a unix string to upper case.
|
||||
**/
|
||||
|
||||
char *strdup_upper(const char *s)
|
||||
{
|
||||
char *out_buffer = SMB_STRDUP(s);
|
||||
const unsigned char *p = (const unsigned char *)s;
|
||||
unsigned char *q = (unsigned char *)out_buffer;
|
||||
|
||||
if (!q) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* this is quite a common operation, so we want it to be
|
||||
fast. We optimise for the ascii case, knowing that all our
|
||||
supported multi-byte character sets are ascii-compatible
|
||||
(ie. they match for the first 128 chars) */
|
||||
|
||||
while (*p) {
|
||||
if (*p & 0x80)
|
||||
break;
|
||||
*q++ = toupper_ascii_fast(*p);
|
||||
p++;
|
||||
}
|
||||
|
||||
if (*p) {
|
||||
/* MB case. */
|
||||
size_t converted_size, converted_size2;
|
||||
smb_ucs2_t *buffer = NULL;
|
||||
|
||||
SAFE_FREE(out_buffer);
|
||||
if (!convert_string_allocate(NULL, CH_UNIX, CH_UTF16LE, s,
|
||||
strlen(s) + 1,
|
||||
(void **)(void *)&buffer,
|
||||
&converted_size, True))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
strupper_w(buffer);
|
||||
|
||||
if (!convert_string_allocate(NULL, CH_UTF16LE, CH_UNIX, buffer,
|
||||
converted_size,
|
||||
(void **)(void *)&out_buffer,
|
||||
&converted_size2, True))
|
||||
{
|
||||
TALLOC_FREE(buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Don't need the intermediate buffer
|
||||
* anymore.
|
||||
*/
|
||||
TALLOC_FREE(buffer);
|
||||
}
|
||||
|
||||
return out_buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
talloc_strdup() a unix string to upper case.
|
||||
**/
|
||||
@ -925,51 +828,31 @@ char *talloc_strdup_upper(TALLOC_CTX *ctx, const char *s)
|
||||
return out_buffer;
|
||||
}
|
||||
|
||||
char *strupper_talloc(TALLOC_CTX *ctx, const char *s) {
|
||||
return talloc_strdup_upper(ctx, s);
|
||||
}
|
||||
|
||||
|
||||
size_t unix_strlower(const char *src, size_t srclen, char *dest, size_t destlen)
|
||||
{
|
||||
size_t size;
|
||||
smb_ucs2_t *buffer = NULL;
|
||||
|
||||
if (!convert_string_allocate(NULL, CH_UNIX, CH_UTF16LE, src, srclen,
|
||||
(void **)(void *)&buffer, &size,
|
||||
True))
|
||||
if (!convert_string_talloc(NULL, CH_UNIX, CH_UTF16LE, src, srclen,
|
||||
(void **)(void *)&buffer, &size,
|
||||
True))
|
||||
{
|
||||
smb_panic("failed to create UCS2 buffer");
|
||||
}
|
||||
if (!strlower_w(buffer) && (dest == src)) {
|
||||
SAFE_FREE(buffer);
|
||||
TALLOC_FREE(buffer);
|
||||
return srclen;
|
||||
}
|
||||
size = convert_string(CH_UTF16LE, CH_UNIX, buffer, size, dest, destlen, True);
|
||||
SAFE_FREE(buffer);
|
||||
TALLOC_FREE(buffer);
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
strdup() a unix string to lower case.
|
||||
**/
|
||||
|
||||
char *strdup_lower(const char *s)
|
||||
{
|
||||
size_t converted_size;
|
||||
smb_ucs2_t *buffer = NULL;
|
||||
char *out_buffer;
|
||||
|
||||
if (!push_ucs2_allocate(&buffer, s, &converted_size)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
strlower_w(buffer);
|
||||
|
||||
if (!pull_ucs2_allocate(&out_buffer, buffer, &converted_size)) {
|
||||
SAFE_FREE(buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SAFE_FREE(buffer);
|
||||
|
||||
return out_buffer;
|
||||
}
|
||||
|
||||
char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s)
|
||||
{
|
||||
@ -993,6 +876,9 @@ char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s)
|
||||
return out_buffer;
|
||||
}
|
||||
|
||||
char *strlower_talloc(TALLOC_CTX *ctx, const char *s) {
|
||||
return talloc_strdup_lower(ctx, s);
|
||||
}
|
||||
|
||||
size_t ucs2_align(const void *base_ptr, const void *p, int flags)
|
||||
{
|
||||
@ -1066,7 +952,7 @@ size_t push_ascii_nstring(void *dest, const char *src)
|
||||
smb_ucs2_t *buffer;
|
||||
|
||||
conv_silent = True;
|
||||
if (!push_ucs2_allocate(&buffer, src, &buffer_len)) {
|
||||
if (!push_ucs2_talloc(NULL, &buffer, src, &buffer_len)) {
|
||||
smb_panic("failed to create UCS2 buffer");
|
||||
}
|
||||
|
||||
@ -1088,8 +974,8 @@ size_t push_ascii_nstring(void *dest, const char *src)
|
||||
}
|
||||
((char *)dest)[dest_len] = '\0';
|
||||
|
||||
SAFE_FREE(buffer);
|
||||
conv_silent = False;
|
||||
TALLOC_FREE(buffer);
|
||||
return dest_len;
|
||||
}
|
||||
|
||||
@ -1097,13 +983,13 @@ size_t push_ascii_nstring(void *dest, const char *src)
|
||||
Push and malloc an ascii string. src and dest null terminated.
|
||||
********************************************************************/
|
||||
|
||||
bool push_ascii_allocate(char **dest, const char *src, size_t *converted_size)
|
||||
bool push_ascii_talloc(TALLOC_CTX *mem_ctx, char **dest, const char *src, size_t *converted_size)
|
||||
{
|
||||
size_t src_len = strlen(src)+1;
|
||||
|
||||
*dest = NULL;
|
||||
return convert_string_allocate(NULL, CH_UNIX, CH_DOS, src, src_len,
|
||||
(void **)dest, converted_size, True);
|
||||
return convert_string_talloc(mem_ctx, CH_UNIX, CH_DOS, src, src_len,
|
||||
(void **)dest, converted_size, True);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1179,21 +1065,14 @@ size_t pull_ascii(char *dest, const void *src, size_t dest_len, size_t src_len,
|
||||
**/
|
||||
|
||||
static size_t pull_ascii_base_talloc(TALLOC_CTX *ctx,
|
||||
char **ppdest,
|
||||
const void *src,
|
||||
size_t src_len,
|
||||
int flags)
|
||||
char **ppdest,
|
||||
const void *src,
|
||||
size_t src_len,
|
||||
int flags)
|
||||
{
|
||||
char *dest = NULL;
|
||||
size_t dest_len;
|
||||
|
||||
#ifdef DEVELOPER
|
||||
/* Ensure we never use the braindead "malloc" varient. */
|
||||
if (ctx == NULL) {
|
||||
smb_panic("NULL talloc CTX in pull_ascii_base_talloc\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
*ppdest = NULL;
|
||||
|
||||
if (!src_len) {
|
||||
@ -1229,7 +1108,7 @@ static size_t pull_ascii_base_talloc(TALLOC_CTX *ctx,
|
||||
|
||||
/* src_len != -1 here. */
|
||||
|
||||
if (!convert_string_allocate(ctx, CH_DOS, CH_UNIX, src, src_len, &dest,
|
||||
if (!convert_string_talloc(ctx, CH_DOS, CH_UNIX, src, src_len, &dest,
|
||||
&dest_len, True)) {
|
||||
dest_len = 0;
|
||||
}
|
||||
@ -1370,27 +1249,6 @@ bool push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Copy a string from a unix char* src to a UCS2 destination, allocating a buffer
|
||||
*
|
||||
* @param dest always set at least to NULL
|
||||
* @parm converted_size set to the number of bytes occupied by the string in
|
||||
* the destination on success.
|
||||
*
|
||||
* @return true if new buffer was correctly allocated, and string was
|
||||
* converted.
|
||||
**/
|
||||
|
||||
bool push_ucs2_allocate(smb_ucs2_t **dest, const char *src,
|
||||
size_t *converted_size)
|
||||
{
|
||||
size_t src_len = strlen(src)+1;
|
||||
|
||||
*dest = NULL;
|
||||
return convert_string_allocate(NULL, CH_UNIX, CH_UTF16LE, src, src_len,
|
||||
(void **)dest, converted_size, True);
|
||||
}
|
||||
|
||||
/**
|
||||
Copy a string from a char* src to a UTF-8 destination.
|
||||
Return the number of bytes occupied by the string in the destination
|
||||
@ -1413,7 +1271,7 @@ static size_t push_utf8(void *dest, const char *src, size_t dest_len, int flags)
|
||||
}
|
||||
|
||||
if (flags & STR_UPPER) {
|
||||
tmpbuf = strdup_upper(src);
|
||||
tmpbuf = strupper_talloc(NULL, src);
|
||||
if (!tmpbuf) {
|
||||
return (size_t)-1;
|
||||
}
|
||||
@ -1427,7 +1285,7 @@ static size_t push_utf8(void *dest, const char *src, size_t dest_len, int flags)
|
||||
}
|
||||
|
||||
ret = convert_string(CH_UNIX, CH_UTF8, src, src_len, dest, dest_len, True);
|
||||
SAFE_FREE(tmpbuf);
|
||||
TALLOC_FREE(tmpbuf);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1457,26 +1315,6 @@ bool push_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src,
|
||||
(void**)dest, converted_size, True);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy a string from a unix char* src to a UTF-8 destination, allocating a buffer
|
||||
*
|
||||
* @param dest always set at least to NULL
|
||||
* @parm converted_size set to the number of bytes occupied by the string in
|
||||
* the destination on success.
|
||||
*
|
||||
* @return true if new buffer was correctly allocated, and string was
|
||||
* converted.
|
||||
**/
|
||||
|
||||
bool push_utf8_allocate(char **dest, const char *src, size_t *converted_size)
|
||||
{
|
||||
size_t src_len = strlen(src)+1;
|
||||
|
||||
*dest = NULL;
|
||||
return convert_string_allocate(NULL, CH_UNIX, CH_UTF8, src, src_len,
|
||||
(void **)dest, converted_size, True);
|
||||
}
|
||||
|
||||
/**
|
||||
Copy a string from a ucs2 source to a unix char* destination.
|
||||
Flags can have:
|
||||
|
@ -444,12 +444,15 @@ ATTRIB_MAP_ENTRY sidmap_attr_list[] = {
|
||||
/* notreached. */
|
||||
}
|
||||
|
||||
if (!push_utf8_allocate(&utf8_value, value, &converted_size)) {
|
||||
if (!push_utf8_talloc(talloc_tos(), &utf8_value, value, &converted_size)) {
|
||||
smb_panic("smbldap_set_mod: String conversion failure!");
|
||||
/* notreached. */
|
||||
}
|
||||
|
||||
mods[i]->mod_values[j] = utf8_value;
|
||||
|
||||
|
||||
mods[i]->mod_values[j] = SMB_STRDUP(utf8_value);
|
||||
TALLOC_FREE(utf8_value);
|
||||
SMB_ASSERT(mods[i]->mod_values[j] != NULL);
|
||||
|
||||
mods[i]->mod_values[j + 1] = NULL;
|
||||
}
|
||||
|
@ -576,7 +576,7 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
|
||||
|
||||
switch (*(p+1)) {
|
||||
case 'U' :
|
||||
r = strdup_lower(smb_name);
|
||||
r = strlower_talloc(tmp_ctx, smb_name);
|
||||
if (r == NULL) {
|
||||
goto error;
|
||||
}
|
||||
@ -584,7 +584,7 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
|
||||
break;
|
||||
case 'G' : {
|
||||
struct passwd *pass;
|
||||
r = SMB_STRDUP(smb_name);
|
||||
r = talloc_strdup(tmp_ctx, smb_name);
|
||||
if (r == NULL) {
|
||||
goto error;
|
||||
}
|
||||
@ -598,7 +598,7 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
|
||||
break;
|
||||
}
|
||||
case 'D' :
|
||||
r = strdup_upper(domain_name);
|
||||
r = strupper_talloc(tmp_ctx, domain_name);
|
||||
if (r == NULL) {
|
||||
goto error;
|
||||
}
|
||||
@ -678,7 +678,7 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
|
||||
}
|
||||
|
||||
p++;
|
||||
SAFE_FREE(r);
|
||||
TALLOC_FREE(r);
|
||||
|
||||
if (a_string == NULL) {
|
||||
goto done;
|
||||
|
@ -93,7 +93,7 @@ WERROR reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len,
|
||||
size_t dstlen, thislen;
|
||||
|
||||
thislen = strnlen_w(p, len) + 1;
|
||||
if (!convert_string_allocate(*values, CH_UTF16LE, CH_UNIX,
|
||||
if (!convert_string_talloc(*values, CH_UTF16LE, CH_UNIX,
|
||||
p, thislen*2, (void *)&val, &dstlen, true)) {
|
||||
TALLOC_FREE(*values);
|
||||
return WERR_NOMEM;
|
||||
|
@ -96,15 +96,15 @@ int StrCaseCmp(const char *s, const char *t)
|
||||
return +1;
|
||||
}
|
||||
|
||||
if (!push_ucs2_allocate(&buffer_s, ps, &size)) {
|
||||
if (!push_ucs2_talloc(NULL, &buffer_s, ps, &size)) {
|
||||
return strcmp(ps, pt);
|
||||
/* Not quite the right answer, but finding the right one
|
||||
under this failure case is expensive, and it's pretty
|
||||
close */
|
||||
}
|
||||
|
||||
if (!push_ucs2_allocate(&buffer_t, pt, &size)) {
|
||||
SAFE_FREE(buffer_s);
|
||||
if (!push_ucs2_talloc(NULL, &buffer_t, pt, &size)) {
|
||||
TALLOC_FREE(buffer_s);
|
||||
return strcmp(ps, pt);
|
||||
/* Not quite the right answer, but finding the right one
|
||||
under this failure case is expensive, and it's pretty
|
||||
@ -112,8 +112,8 @@ int StrCaseCmp(const char *s, const char *t)
|
||||
}
|
||||
|
||||
ret = strcasecmp_w(buffer_s, buffer_t);
|
||||
SAFE_FREE(buffer_s);
|
||||
SAFE_FREE(buffer_t);
|
||||
TALLOC_FREE(buffer_s);
|
||||
TALLOC_FREE(buffer_t);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -157,15 +157,15 @@ int StrnCaseCmp(const char *s, const char *t, size_t len)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!push_ucs2_allocate(&buffer_s, ps, &size)) {
|
||||
if (!push_ucs2_talloc(NULL, &buffer_s, ps, &size)) {
|
||||
return strncmp(ps, pt, len-n);
|
||||
/* Not quite the right answer, but finding the right one
|
||||
under this failure case is expensive,
|
||||
and it's pretty close */
|
||||
}
|
||||
|
||||
if (!push_ucs2_allocate(&buffer_t, pt, &size)) {
|
||||
SAFE_FREE(buffer_s);
|
||||
if (!push_ucs2_talloc(NULL, &buffer_t, pt, &size)) {
|
||||
TALLOC_FREE(buffer_s);
|
||||
return strncmp(ps, pt, len-n);
|
||||
/* Not quite the right answer, but finding the right one
|
||||
under this failure case is expensive,
|
||||
@ -173,8 +173,8 @@ int StrnCaseCmp(const char *s, const char *t, size_t len)
|
||||
}
|
||||
|
||||
ret = strncasecmp_w(buffer_s, buffer_t, len-n);
|
||||
SAFE_FREE(buffer_s);
|
||||
SAFE_FREE(buffer_t);
|
||||
TALLOC_FREE(buffer_s);
|
||||
TALLOC_FREE(buffer_t);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -366,11 +366,11 @@ size_t str_charnum(const char *s)
|
||||
{
|
||||
size_t ret, converted_size;
|
||||
smb_ucs2_t *tmpbuf2 = NULL;
|
||||
if (!push_ucs2_allocate(&tmpbuf2, s, &converted_size)) {
|
||||
if (!push_ucs2_talloc(NULL, &tmpbuf2, s, &converted_size)) {
|
||||
return 0;
|
||||
}
|
||||
ret = strlen_w(tmpbuf2);
|
||||
SAFE_FREE(tmpbuf2);
|
||||
TALLOC_FREE(tmpbuf2);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -384,11 +384,11 @@ size_t str_ascii_charnum(const char *s)
|
||||
{
|
||||
size_t ret, converted_size;
|
||||
char *tmpbuf2 = NULL;
|
||||
if (!push_ascii_allocate(&tmpbuf2, s, &converted_size)) {
|
||||
if (!push_ascii_talloc(NULL, &tmpbuf2, s, &converted_size)) {
|
||||
return 0;
|
||||
}
|
||||
ret = strlen(tmpbuf2);
|
||||
SAFE_FREE(tmpbuf2);
|
||||
TALLOC_FREE(tmpbuf2);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -455,7 +455,7 @@ bool strhasupper(const char *s)
|
||||
bool ret;
|
||||
size_t converted_size;
|
||||
|
||||
if (!push_ucs2_allocate(&tmp, s, &converted_size)) {
|
||||
if (!push_ucs2_talloc(NULL, &tmp, s, &converted_size)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -466,7 +466,7 @@ bool strhasupper(const char *s)
|
||||
}
|
||||
|
||||
ret = (*p != 0);
|
||||
SAFE_FREE(tmp);
|
||||
TALLOC_FREE(tmp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -480,7 +480,7 @@ bool strhaslower(const char *s)
|
||||
bool ret;
|
||||
size_t converted_size;
|
||||
|
||||
if (!push_ucs2_allocate(&tmp, s, &converted_size)) {
|
||||
if (!push_ucs2_talloc(NULL, &tmp, s, &converted_size)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -491,7 +491,7 @@ bool strhaslower(const char *s)
|
||||
}
|
||||
|
||||
ret = (*p != 0);
|
||||
SAFE_FREE(tmp);
|
||||
TALLOC_FREE(tmp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1177,24 +1177,24 @@ char *strchr_m(const char *src, char c)
|
||||
s = src;
|
||||
#endif
|
||||
|
||||
if (!push_ucs2_allocate(&ws, s, &converted_size)) {
|
||||
if (!push_ucs2_talloc(NULL, &ws, s, &converted_size)) {
|
||||
/* Wrong answer, but what can we do... */
|
||||
return strchr(src, c);
|
||||
}
|
||||
p = strchr_w(ws, UCS2_CHAR(c));
|
||||
if (!p) {
|
||||
SAFE_FREE(ws);
|
||||
TALLOC_FREE(ws);
|
||||
return NULL;
|
||||
}
|
||||
*p = 0;
|
||||
if (!pull_ucs2_allocate(&s2, ws, &converted_size)) {
|
||||
if (!pull_ucs2_talloc(NULL, &s2, ws, &converted_size)) {
|
||||
SAFE_FREE(ws);
|
||||
/* Wrong answer, but what can we do... */
|
||||
return strchr(src, c);
|
||||
}
|
||||
ret = (char *)(s+strlen(s2));
|
||||
SAFE_FREE(ws);
|
||||
SAFE_FREE(s2);
|
||||
TALLOC_FREE(ws);
|
||||
TALLOC_FREE(s2);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1248,24 +1248,24 @@ char *strrchr_m(const char *s, char c)
|
||||
char *ret;
|
||||
size_t converted_size;
|
||||
|
||||
if (!push_ucs2_allocate(&ws, s, &converted_size)) {
|
||||
if (!push_ucs2_talloc(NULL, &ws, s, &converted_size)) {
|
||||
/* Wrong answer, but what can we do. */
|
||||
return strrchr(s, c);
|
||||
}
|
||||
p = strrchr_w(ws, UCS2_CHAR(c));
|
||||
if (!p) {
|
||||
SAFE_FREE(ws);
|
||||
TALLOC_FREE(ws);
|
||||
return NULL;
|
||||
}
|
||||
*p = 0;
|
||||
if (!pull_ucs2_allocate(&s2, ws, &converted_size)) {
|
||||
SAFE_FREE(ws);
|
||||
if (!pull_ucs2_talloc(NULL, &s2, ws, &converted_size)) {
|
||||
TALLOC_FREE(ws);
|
||||
/* Wrong answer, but what can we do. */
|
||||
return strrchr(s, c);
|
||||
}
|
||||
ret = (char *)(s+strlen(s2));
|
||||
SAFE_FREE(ws);
|
||||
SAFE_FREE(s2);
|
||||
TALLOC_FREE(ws);
|
||||
TALLOC_FREE(s2);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@ -1283,24 +1283,24 @@ char *strnrchr_m(const char *s, char c, unsigned int n)
|
||||
char *ret;
|
||||
size_t converted_size;
|
||||
|
||||
if (!push_ucs2_allocate(&ws, s, &converted_size)) {
|
||||
if (!push_ucs2_talloc(NULL, &ws, s, &converted_size)) {
|
||||
/* Too hard to try and get right. */
|
||||
return NULL;
|
||||
}
|
||||
p = strnrchr_w(ws, UCS2_CHAR(c), n);
|
||||
if (!p) {
|
||||
SAFE_FREE(ws);
|
||||
TALLOC_FREE(ws);
|
||||
return NULL;
|
||||
}
|
||||
*p = 0;
|
||||
if (!pull_ucs2_allocate(&s2, ws, &converted_size)) {
|
||||
SAFE_FREE(ws);
|
||||
if (!pull_ucs2_talloc(NULL, &s2, ws, &converted_size)) {
|
||||
TALLOC_FREE(ws);
|
||||
/* Too hard to try and get right. */
|
||||
return NULL;
|
||||
}
|
||||
ret = (char *)(s+strlen(s2));
|
||||
SAFE_FREE(ws);
|
||||
SAFE_FREE(s2);
|
||||
TALLOC_FREE(ws);
|
||||
TALLOC_FREE(s2);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1352,13 +1352,13 @@ char *strstr_m(const char *src, const char *findstr)
|
||||
s = src;
|
||||
#endif
|
||||
|
||||
if (!push_ucs2_allocate(&src_w, src, &converted_size)) {
|
||||
if (!push_ucs2_talloc(NULL, &src_w, src, &converted_size)) {
|
||||
DEBUG(0,("strstr_m: src malloc fail\n"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!push_ucs2_allocate(&find_w, findstr, &converted_size)) {
|
||||
SAFE_FREE(src_w);
|
||||
if (!push_ucs2_talloc(NULL, &find_w, findstr, &converted_size)) {
|
||||
TALLOC_FREE(src_w);
|
||||
DEBUG(0,("strstr_m: find malloc fail\n"));
|
||||
return NULL;
|
||||
}
|
||||
@ -1366,22 +1366,22 @@ char *strstr_m(const char *src, const char *findstr)
|
||||
p = strstr_w(src_w, find_w);
|
||||
|
||||
if (!p) {
|
||||
SAFE_FREE(src_w);
|
||||
SAFE_FREE(find_w);
|
||||
TALLOC_FREE(src_w);
|
||||
TALLOC_FREE(find_w);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*p = 0;
|
||||
if (!pull_ucs2_allocate(&s2, src_w, &converted_size)) {
|
||||
SAFE_FREE(src_w);
|
||||
SAFE_FREE(find_w);
|
||||
if (!pull_ucs2_talloc(NULL, &s2, src_w, &converted_size)) {
|
||||
TALLOC_FREE(src_w);
|
||||
TALLOC_FREE(find_w);
|
||||
DEBUG(0,("strstr_m: dest malloc fail\n"));
|
||||
return NULL;
|
||||
}
|
||||
retp = (char *)(s+strlen(s2));
|
||||
SAFE_FREE(src_w);
|
||||
SAFE_FREE(find_w);
|
||||
SAFE_FREE(s2);
|
||||
TALLOC_FREE(src_w);
|
||||
TALLOC_FREE(find_w);
|
||||
TALLOC_FREE(s2);
|
||||
return retp;
|
||||
}
|
||||
|
||||
|
@ -1500,7 +1500,7 @@ ADS_STATUS ads_gen_mod(ADS_STRUCT *ads, const char *mod_dn, ADS_MODLIST mods)
|
||||
controls[0] = &PermitModify;
|
||||
controls[1] = NULL;
|
||||
|
||||
if (!push_utf8_allocate(&utf8_dn, mod_dn, &converted_size)) {
|
||||
if (!push_utf8_talloc(talloc_tos(), &utf8_dn, mod_dn, &converted_size)) {
|
||||
return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
|
||||
}
|
||||
|
||||
@ -1510,7 +1510,7 @@ ADS_STATUS ads_gen_mod(ADS_STRUCT *ads, const char *mod_dn, ADS_MODLIST mods)
|
||||
mods[i] = NULL;
|
||||
ret = ldap_modify_ext_s(ads->ldap.ld, utf8_dn,
|
||||
(LDAPMod **) mods, controls, NULL);
|
||||
SAFE_FREE(utf8_dn);
|
||||
TALLOC_FREE(utf8_dn);
|
||||
return ADS_ERROR(ret);
|
||||
}
|
||||
|
||||
@ -1527,8 +1527,8 @@ ADS_STATUS ads_gen_add(ADS_STRUCT *ads, const char *new_dn, ADS_MODLIST mods)
|
||||
char *utf8_dn = NULL;
|
||||
size_t converted_size;
|
||||
|
||||
if (!push_utf8_allocate(&utf8_dn, new_dn, &converted_size)) {
|
||||
DEBUG(1, ("ads_gen_add: push_utf8_allocate failed!"));
|
||||
if (!push_utf8_talloc(talloc_tos(), &utf8_dn, new_dn, &converted_size)) {
|
||||
DEBUG(1, ("ads_gen_add: push_utf8_talloc failed!"));
|
||||
return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
|
||||
}
|
||||
|
||||
@ -1538,7 +1538,7 @@ ADS_STATUS ads_gen_add(ADS_STRUCT *ads, const char *new_dn, ADS_MODLIST mods)
|
||||
mods[i] = NULL;
|
||||
|
||||
ret = ldap_add_s(ads->ldap.ld, utf8_dn, (LDAPMod**)mods);
|
||||
SAFE_FREE(utf8_dn);
|
||||
TALLOC_FREE(utf8_dn);
|
||||
return ADS_ERROR(ret);
|
||||
}
|
||||
|
||||
@ -1553,13 +1553,13 @@ ADS_STATUS ads_del_dn(ADS_STRUCT *ads, char *del_dn)
|
||||
int ret;
|
||||
char *utf8_dn = NULL;
|
||||
size_t converted_size;
|
||||
if (!push_utf8_allocate(&utf8_dn, del_dn, &converted_size)) {
|
||||
DEBUG(1, ("ads_del_dn: push_utf8_allocate failed!"));
|
||||
if (!push_utf8_talloc(talloc_tos(), &utf8_dn, del_dn, &converted_size)) {
|
||||
DEBUG(1, ("ads_del_dn: push_utf8_talloc failed!"));
|
||||
return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
|
||||
}
|
||||
|
||||
ret = ldap_delete_s(ads->ldap.ld, utf8_dn);
|
||||
SAFE_FREE(utf8_dn);
|
||||
TALLOC_FREE(utf8_dn);
|
||||
return ADS_ERROR(ret);
|
||||
}
|
||||
|
||||
|
@ -968,10 +968,10 @@ uint8_t *smb_bytes_push_str(uint8_t *buf, bool ucs2,
|
||||
buflen += 1;
|
||||
}
|
||||
|
||||
if (!convert_string_allocate(talloc_tos(), CH_UNIX,
|
||||
ucs2 ? CH_UTF16LE : CH_DOS,
|
||||
str, str_len, &converted,
|
||||
&converted_size, true)) {
|
||||
if (!convert_string_talloc(talloc_tos(), CH_UNIX,
|
||||
ucs2 ? CH_UTF16LE : CH_DOS,
|
||||
str, str_len, &converted,
|
||||
&converted_size, true)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,7 @@ int cli_message_text_build(struct cli_state *cli, const char *msg, int len, int
|
||||
p = smb_buf(cli->outbuf);
|
||||
*p++ = 1;
|
||||
|
||||
if (!convert_string_allocate(NULL, CH_UNIX, CH_DOS, msg, len,
|
||||
if (!convert_string_talloc(talloc_tos(), CH_UNIX, CH_DOS, msg, len,
|
||||
(void **)(void *)&msgdos, &lendos, True) || !msgdos) {
|
||||
DEBUG(3,("Conversion failed, sending message in UNIX charset\n"));
|
||||
SSVAL(p, 0, len); p += 2;
|
||||
@ -101,7 +101,7 @@ int cli_message_text_build(struct cli_state *cli, const char *msg, int len, int
|
||||
}
|
||||
memcpy(p, msgdos, lendos);
|
||||
p += lendos;
|
||||
SAFE_FREE(msgdos);
|
||||
TALLOC_FREE(msgdos);
|
||||
}
|
||||
|
||||
cli_setup_bcc(cli, p);
|
||||
|
@ -1050,11 +1050,11 @@ struct tevent_req *cli_trans_send(
|
||||
ZERO_STRUCT(state->rdata);
|
||||
|
||||
if ((pipe_name != NULL)
|
||||
&& (!convert_string_allocate(state, CH_UNIX,
|
||||
cli_ucs2(cli) ? CH_UTF16LE : CH_DOS,
|
||||
pipe_name, strlen(pipe_name) + 1,
|
||||
&state->pipe_name_conv,
|
||||
&state->pipe_name_conv_len, true))) {
|
||||
&& (!convert_string_talloc(state, CH_UNIX,
|
||||
cli_ucs2(cli) ? CH_UTF16LE : CH_DOS,
|
||||
pipe_name, strlen(pipe_name) + 1,
|
||||
&state->pipe_name_conv,
|
||||
&state->pipe_name_conv_len, true))) {
|
||||
tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
|
||||
return tevent_req_post(req, ev);
|
||||
}
|
||||
|
@ -172,16 +172,16 @@ bool ntv2_owf_gen(const uchar owf[16],
|
||||
|
||||
HMACMD5Context ctx;
|
||||
|
||||
if (!push_ucs2_allocate(&user, user_in, &user_byte_len)) {
|
||||
DEBUG(0, ("push_uss2_allocate() for user failed: %s\n",
|
||||
if (!push_ucs2_talloc(NULL, &user, user_in, &user_byte_len)) {
|
||||
DEBUG(0, ("push_uss2_talloc() for user failed: %s\n",
|
||||
strerror(errno)));
|
||||
return False;
|
||||
}
|
||||
|
||||
if (!push_ucs2_allocate(&domain, domain_in, &domain_byte_len)) {
|
||||
DEBUG(0, ("push_uss2_allocate() for domain failed: %s\n",
|
||||
if (!push_ucs2_talloc(NULL, &domain, domain_in, &domain_byte_len)) {
|
||||
DEBUG(0, ("push_uss2_talloc() for domain failed: %s\n",
|
||||
strerror(errno)));
|
||||
SAFE_FREE(user);
|
||||
TALLOC_FREE(user);
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -210,8 +210,8 @@ bool ntv2_owf_gen(const uchar owf[16],
|
||||
dump_data(100, (uint8 *)kr_buf, 16);
|
||||
#endif
|
||||
|
||||
SAFE_FREE(user);
|
||||
SAFE_FREE(domain);
|
||||
TALLOC_FREE(user);
|
||||
TALLOC_FREE(domain);
|
||||
return True;
|
||||
}
|
||||
|
||||
|
@ -1711,22 +1711,22 @@ static NTSTATUS ldapsam_modify_entry(struct pdb_methods *my_methods,
|
||||
}
|
||||
}
|
||||
|
||||
if (!push_utf8_allocate(&utf8_password,
|
||||
if (!push_utf8_talloc(talloc_tos(), &utf8_password,
|
||||
pdb_get_plaintext_passwd(newpwd),
|
||||
&converted_size))
|
||||
{
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
if (!push_utf8_allocate(&utf8_dn, dn, &converted_size)) {
|
||||
SAFE_FREE(utf8_password);
|
||||
if (!push_utf8_talloc(talloc_tos(), &utf8_dn, dn, &converted_size)) {
|
||||
TALLOC_FREE(utf8_password);
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
if ((ber = ber_alloc_t(LBER_USE_DER))==NULL) {
|
||||
DEBUG(0,("ber_alloc_t returns NULL\n"));
|
||||
SAFE_FREE(utf8_password);
|
||||
SAFE_FREE(utf8_dn);
|
||||
TALLOC_FREE(utf8_password);
|
||||
TALLOC_FREE(utf8_dn);
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
@ -1736,21 +1736,21 @@ static NTSTATUS ldapsam_modify_entry(struct pdb_methods *my_methods,
|
||||
(ber_printf (ber, "n}") < 0)) {
|
||||
DEBUG(0,("ldapsam_modify_entry: ber_printf returns a value <0\n"));
|
||||
ber_free(ber,1);
|
||||
SAFE_FREE(utf8_dn);
|
||||
SAFE_FREE(utf8_password);
|
||||
TALLOC_FREE(utf8_dn);
|
||||
TALLOC_FREE(utf8_password);
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
if ((rc = ber_flatten (ber, &bv))<0) {
|
||||
DEBUG(0,("ldapsam_modify_entry: ber_flatten returns a value <0\n"));
|
||||
ber_free(ber,1);
|
||||
SAFE_FREE(utf8_dn);
|
||||
SAFE_FREE(utf8_password);
|
||||
TALLOC_FREE(utf8_dn);
|
||||
TALLOC_FREE(utf8_password);
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
SAFE_FREE(utf8_dn);
|
||||
SAFE_FREE(utf8_password);
|
||||
TALLOC_FREE(utf8_dn);
|
||||
TALLOC_FREE(utf8_password);
|
||||
ber_free(ber, 1);
|
||||
|
||||
if (!ldap_state->is_nds_ldap) {
|
||||
|
@ -720,7 +720,7 @@ bool secrets_store_trusted_domain_password(const char* domain, const char* pwd,
|
||||
struct trusted_dom_pass pass;
|
||||
ZERO_STRUCT(pass);
|
||||
|
||||
if (!push_ucs2_allocate(&uni_dom_name, domain, &converted_size)) {
|
||||
if (!push_ucs2_talloc(talloc_tos(), &uni_dom_name, domain, &converted_size)) {
|
||||
DEBUG(0, ("Could not convert domain name %s to unicode\n",
|
||||
domain));
|
||||
return False;
|
||||
@ -728,7 +728,7 @@ bool secrets_store_trusted_domain_password(const char* domain, const char* pwd,
|
||||
|
||||
strncpy_w(pass.uni_name, uni_dom_name, sizeof(pass.uni_name) - 1);
|
||||
pass.uni_name_len = strlen_w(uni_dom_name)+1;
|
||||
SAFE_FREE(uni_dom_name);
|
||||
TALLOC_FREE(uni_dom_name);
|
||||
|
||||
/* last change time */
|
||||
pass.mod_time = time(NULL);
|
||||
@ -742,14 +742,14 @@ bool secrets_store_trusted_domain_password(const char* domain, const char* pwd,
|
||||
|
||||
/* Calculate the length. */
|
||||
pass_len = tdb_trusted_dom_pass_pack(NULL, 0, &pass);
|
||||
pass_buf = SMB_MALLOC_ARRAY(uint8, pass_len);
|
||||
pass_buf = talloc_array(talloc_tos(), uint8, pass_len);
|
||||
if (!pass_buf) {
|
||||
return false;
|
||||
}
|
||||
pass_len = tdb_trusted_dom_pass_pack(pass_buf, pass_len, &pass);
|
||||
ret = secrets_store(trustdom_keystr(domain), (void *)pass_buf,
|
||||
pass_len);
|
||||
SAFE_FREE(pass_buf);
|
||||
TALLOC_FREE(pass_buf);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -290,15 +290,15 @@ static bool is_8_3(const char *fname, bool check_case, bool allow_wildcards,
|
||||
if (strlen(f) > 12)
|
||||
return False;
|
||||
|
||||
if (!push_ucs2_allocate(&ucs2name, f, &size)) {
|
||||
DEBUG(0,("is_8_3: internal error push_ucs2_allocate() failed!\n"));
|
||||
if (!push_ucs2_talloc(NULL, &ucs2name, f, &size)) {
|
||||
DEBUG(0,("is_8_3: internal error push_ucs2_talloc() failed!\n"));
|
||||
goto done;
|
||||
}
|
||||
|
||||
ret = is_8_3_w(ucs2name, allow_wildcards);
|
||||
|
||||
done:
|
||||
SAFE_FREE(ucs2name);
|
||||
TALLOC_FREE(ucs2name);
|
||||
|
||||
if (!NT_STATUS_IS_OK(ret)) {
|
||||
return False;
|
||||
@ -606,12 +606,12 @@ static bool must_mangle(const char *name,
|
||||
|
||||
magic_char = lp_magicchar(p);
|
||||
|
||||
if (!push_ucs2_allocate(&name_ucs2, name, &converted_size)) {
|
||||
DEBUG(0, ("push_ucs2_allocate failed!\n"));
|
||||
if (!push_ucs2_talloc(NULL, &name_ucs2, name, &converted_size)) {
|
||||
DEBUG(0, ("push_ucs2_talloc failed!\n"));
|
||||
return False;
|
||||
}
|
||||
status = is_valid_name(name_ucs2, False, False);
|
||||
SAFE_FREE(name_ucs2);
|
||||
TALLOC_FREE(name_ucs2);
|
||||
return NT_STATUS_IS_OK(status);
|
||||
}
|
||||
|
||||
@ -645,20 +645,20 @@ static bool hash_name_to_8_3(const char *in,
|
||||
DEBUG(5,("hash_name_to_8_3( %s, cache83 = %s)\n", in,
|
||||
cache83 ? "True" : "False"));
|
||||
|
||||
if (!push_ucs2_allocate(&in_ucs2, in, &converted_size)) {
|
||||
DEBUG(0, ("push_ucs2_allocate failed!\n"));
|
||||
if (!push_ucs2_talloc(NULL, &in_ucs2, in, &converted_size)) {
|
||||
DEBUG(0, ("push_ucs2_talloc failed!\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
/* If it's already 8.3, just copy. */
|
||||
if (NT_STATUS_IS_OK(is_valid_name(in_ucs2, False, False)) &&
|
||||
NT_STATUS_IS_OK(is_8_3_w(in_ucs2, False))) {
|
||||
SAFE_FREE(in_ucs2);
|
||||
TALLOC_FREE(in_ucs2);
|
||||
safe_strcpy(out, in, 12);
|
||||
return True;
|
||||
}
|
||||
|
||||
SAFE_FREE(in_ucs2);
|
||||
TALLOC_FREE(in_ucs2);
|
||||
if (!to_8_3(magic_char, in, out, default_case)) {
|
||||
return False;
|
||||
}
|
||||
|
@ -205,7 +205,7 @@ bool stat_cache_lookup(connection_struct *conn,
|
||||
} else {
|
||||
chk_name = talloc_strdup_upper(ctx,name);
|
||||
if (!chk_name) {
|
||||
DEBUG(0, ("stat_cache_lookup: strdup_upper failed!\n"));
|
||||
DEBUG(0, ("stat_cache_lookup: talloc_strdup_upper failed!\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
|
@ -766,7 +766,7 @@ static int net_conf_setparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
|
||||
d_printf("error: out of memory!\n");
|
||||
goto done;
|
||||
}
|
||||
param = talloc_strdup_lower(mem_ctx, argv[1]);
|
||||
param = strlower_talloc(mem_ctx, argv[1]);
|
||||
if (param == NULL) {
|
||||
d_printf("error: out of memory!\n");
|
||||
goto done;
|
||||
@ -818,7 +818,7 @@ static int net_conf_getparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
|
||||
d_printf("error: out of memory!\n");
|
||||
goto done;
|
||||
}
|
||||
param = talloc_strdup_lower(mem_ctx, argv[1]);
|
||||
param = strlower_talloc(mem_ctx, argv[1]);
|
||||
if (param == NULL) {
|
||||
d_printf("error: out of memory!\n");
|
||||
goto done;
|
||||
@ -868,7 +868,7 @@ static int net_conf_delparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
|
||||
d_printf("error: out of memory!\n");
|
||||
goto done;
|
||||
}
|
||||
param = talloc_strdup_lower(mem_ctx, argv[1]);
|
||||
param = strlower_talloc(mem_ctx, argv[1]);
|
||||
if (param == NULL) {
|
||||
d_printf("error: out of memory!\n");
|
||||
goto done;
|
||||
|
@ -154,8 +154,8 @@ static int net_usershare_delete(struct net_context *c, int argc, const char **ar
|
||||
return net_usershare_delete_usage(c, argc, argv);
|
||||
}
|
||||
|
||||
if ((sharename = strdup_lower(argv[0])) == NULL) {
|
||||
d_fprintf(stderr, "strdup failed\n");
|
||||
if ((sharename = strlower_talloc(talloc_tos(), argv[0])) == NULL) {
|
||||
d_fprintf(stderr, "strlower_talloc failed\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -624,22 +624,22 @@ static int net_usershare_add(struct net_context *c, int argc, const char **argv)
|
||||
default:
|
||||
return net_usershare_add_usage(c, argc, argv);
|
||||
case 2:
|
||||
sharename = strdup_lower(argv[0]);
|
||||
sharename = strlower_talloc(ctx, argv[0]);
|
||||
us_path = argv[1];
|
||||
break;
|
||||
case 3:
|
||||
sharename = strdup_lower(argv[0]);
|
||||
sharename = strlower_talloc(ctx, argv[0]);
|
||||
us_path = argv[1];
|
||||
us_comment = argv[2];
|
||||
break;
|
||||
case 4:
|
||||
sharename = strdup_lower(argv[0]);
|
||||
sharename = strlower_talloc(ctx, argv[0]);
|
||||
us_path = argv[1];
|
||||
us_comment = argv[2];
|
||||
arg_acl = argv[3];
|
||||
break;
|
||||
case 5:
|
||||
sharename = strdup_lower(argv[0]);
|
||||
sharename = strlower_talloc(ctx, argv[0]);
|
||||
us_path = argv[1];
|
||||
us_comment = argv[2];
|
||||
arg_acl = argv[3];
|
||||
|
@ -458,31 +458,31 @@ static bool test_plaintext(enum ntlm_break break_which)
|
||||
flags |= WBFLAG_PAM_LMKEY;
|
||||
flags |= WBFLAG_PAM_USER_SESSION_KEY;
|
||||
|
||||
if (!push_ucs2_allocate(&nt_response_ucs2, opt_password,
|
||||
if (!push_ucs2_talloc(NULL, &nt_response_ucs2, opt_password,
|
||||
&converted_size))
|
||||
{
|
||||
DEBUG(0, ("push_ucs2_allocate failed!\n"));
|
||||
DEBUG(0, ("push_ucs2_talloc failed!\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
nt_response.data = (unsigned char *)nt_response_ucs2;
|
||||
nt_response.length = strlen_w(nt_response_ucs2)*sizeof(smb_ucs2_t);
|
||||
|
||||
if ((password = strdup_upper(opt_password)) == NULL) {
|
||||
DEBUG(0, ("strdup_upper failed!\n"));
|
||||
if ((password = strupper_talloc(NULL, opt_password)) == NULL) {
|
||||
DEBUG(0, ("strupper_talloc() failed!\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (!convert_string_allocate(NULL, CH_UNIX,
|
||||
CH_DOS, password,
|
||||
strlen(password)+1,
|
||||
&lm_response.data,
|
||||
&lm_response.length, True)) {
|
||||
DEBUG(0, ("convert_string_allocate failed!\n"));
|
||||
if (!convert_string_talloc(NULL, CH_UNIX,
|
||||
CH_DOS, password,
|
||||
strlen(password)+1,
|
||||
&lm_response.data,
|
||||
&lm_response.length, True)) {
|
||||
DEBUG(0, ("convert_string_talloc failed!\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
SAFE_FREE(password);
|
||||
TALLOC_FREE(password);
|
||||
|
||||
switch (break_which) {
|
||||
case BREAK_NONE:
|
||||
@ -513,8 +513,8 @@ static bool test_plaintext(enum ntlm_break break_which)
|
||||
user_session_key,
|
||||
&error_string, NULL);
|
||||
|
||||
SAFE_FREE(nt_response.data);
|
||||
SAFE_FREE(lm_response.data);
|
||||
TALLOC_FREE(nt_response.data);
|
||||
TALLOC_FREE(lm_response.data);
|
||||
data_blob_free(&chall);
|
||||
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
|
@ -205,14 +205,14 @@ void cgi_load_variables(void)
|
||||
char *dest = NULL;
|
||||
size_t dest_len;
|
||||
|
||||
convert_string_allocate(frame, CH_UTF8, CH_UNIX,
|
||||
convert_string_talloc(frame, CH_UTF8, CH_UNIX,
|
||||
variables[i].name, strlen(variables[i].name),
|
||||
&dest, &dest_len, True);
|
||||
SAFE_FREE(variables[i].name);
|
||||
variables[i].name = SMB_STRDUP(dest ? dest : "");
|
||||
|
||||
dest = NULL;
|
||||
convert_string_allocate(frame, CH_UTF8, CH_UNIX,
|
||||
convert_string_talloc(frame, CH_UTF8, CH_UNIX,
|
||||
variables[i].value, strlen(variables[i].value),
|
||||
&dest, &dest_len, True);
|
||||
SAFE_FREE(variables[i].value);
|
||||
|
@ -171,10 +171,10 @@ static void print_share_mode(const struct share_mode_entry *e,
|
||||
printf("NONE ");
|
||||
printf("</td>");
|
||||
|
||||
push_utf8_allocate(&utf8_fname, fname, &converted_size);
|
||||
push_utf8_talloc(talloc_tos(), &utf8_fname, fname, &converted_size);
|
||||
printf("<td>%s</td><td>%s</td></tr>\n",
|
||||
utf8_fname,tstring(talloc_tos(),e->time.tv_sec));
|
||||
SAFE_FREE(utf8_fname);
|
||||
TALLOC_FREE(utf8_fname);
|
||||
}
|
||||
|
||||
|
||||
|
@ -255,16 +255,16 @@ static void show_parameter(int snum, struct parm_struct *parm)
|
||||
for (;*list;list++) {
|
||||
/* enclose in HTML encoded quotes if the string contains a space */
|
||||
if ( strchr_m(*list, ' ') ) {
|
||||
push_utf8_allocate(&utf8_s1, *list, &converted_size);
|
||||
push_utf8_allocate(&utf8_s2, ((*(list+1))?", ":""), &converted_size);
|
||||
push_utf8_talloc(talloc_tos(), &utf8_s1, *list, &converted_size);
|
||||
push_utf8_talloc(talloc_tos(), &utf8_s2, ((*(list+1))?", ":""), &converted_size);
|
||||
printf(""%s"%s", utf8_s1, utf8_s2);
|
||||
} else {
|
||||
push_utf8_allocate(&utf8_s1, *list, &converted_size);
|
||||
push_utf8_allocate(&utf8_s2, ((*(list+1))?", ":""), &converted_size);
|
||||
push_utf8_talloc(talloc_tos(), &utf8_s1, *list, &converted_size);
|
||||
push_utf8_talloc(talloc_tos(), &utf8_s2, ((*(list+1))?", ":""), &converted_size);
|
||||
printf("%s%s", utf8_s1, utf8_s2);
|
||||
}
|
||||
SAFE_FREE(utf8_s1);
|
||||
SAFE_FREE(utf8_s2);
|
||||
TALLOC_FREE(utf8_s1);
|
||||
TALLOC_FREE(utf8_s2);
|
||||
}
|
||||
}
|
||||
printf("\">");
|
||||
@ -285,10 +285,10 @@ static void show_parameter(int snum, struct parm_struct *parm)
|
||||
|
||||
case P_STRING:
|
||||
case P_USTRING:
|
||||
push_utf8_allocate(&utf8_s1, *(char **)ptr, &converted_size);
|
||||
push_utf8_talloc(talloc_tos(), &utf8_s1, *(char **)ptr, &converted_size);
|
||||
printf("<input type=text size=40 name=\"parm_%s\" value=\"%s\">",
|
||||
make_parm_name(parm->label), fix_quotes(ctx, utf8_s1));
|
||||
SAFE_FREE(utf8_s1);
|
||||
TALLOC_FREE(utf8_s1);
|
||||
printf("<input type=button value=\"%s\" onClick=\"swatform.parm_%s.value=\'%s\'\">",
|
||||
_("Set Default"), make_parm_name(parm->label),fix_backslash((char *)(parm->def.svalue)));
|
||||
break;
|
||||
@ -959,11 +959,11 @@ static void shares_page(void)
|
||||
for (i=0;i<lp_numservices();i++) {
|
||||
s = lp_servicename(i);
|
||||
if (s && (*s) && strcmp(s,"IPC$") && !lp_print_ok(i)) {
|
||||
push_utf8_allocate(&utf8_s, s, &converted_size);
|
||||
push_utf8_talloc(talloc_tos(), &utf8_s, s, &converted_size);
|
||||
printf("<option %s value=\"%s\">%s\n",
|
||||
(share && strcmp(share,s)==0)?"SELECTED":"",
|
||||
utf8_s, utf8_s);
|
||||
SAFE_FREE(utf8_s);
|
||||
TALLOC_FREE(utf8_s);
|
||||
}
|
||||
}
|
||||
printf("</select></td>\n");
|
||||
|
Loading…
x
Reference in New Issue
Block a user