version 1.37.2.1, 2006/09/30 04:06:50 |
version 1.48, 2010/02/02 22:49:34 |
|
|
u_int len; |
u_int len; |
|
|
/* Get the length. */ |
/* Get the length. */ |
len = buffer_get_int(buffer); |
if (buffer_get_int_ret(&len, buffer) != 0) { |
|
error("buffer_get_string_ret: cannot extract length"); |
|
return (NULL); |
|
} |
if (len > 256 * 1024) { |
if (len > 256 * 1024) { |
error("buffer_get_string_ret: bad string length %u", len); |
error("buffer_get_string_ret: bad string length %u", len); |
return (NULL); |
return (NULL); |
|
|
return (NULL); |
return (NULL); |
} |
} |
/* Append a null character to make processing easier. */ |
/* Append a null character to make processing easier. */ |
value[len] = 0; |
value[len] = '\0'; |
/* Optionally return the length of the string. */ |
/* Optionally return the length of the string. */ |
if (length_ptr) |
if (length_ptr) |
*length_ptr = len; |
*length_ptr = len; |
|
|
|
|
if ((ret = buffer_get_string_ret(buffer, length_ptr)) == NULL) |
if ((ret = buffer_get_string_ret(buffer, length_ptr)) == NULL) |
fatal("buffer_get_string: buffer error"); |
fatal("buffer_get_string: buffer error"); |
|
return (ret); |
|
} |
|
|
|
void * |
|
buffer_get_string_ptr_ret(Buffer *buffer, u_int *length_ptr) |
|
{ |
|
void *ptr; |
|
u_int len; |
|
|
|
if (buffer_get_int_ret(&len, buffer) != 0) |
|
return NULL; |
|
if (len > 256 * 1024) { |
|
error("buffer_get_string_ptr: bad string length %u", len); |
|
return NULL; |
|
} |
|
ptr = buffer_ptr(buffer); |
|
buffer_consume(buffer, len); |
|
if (length_ptr) |
|
*length_ptr = len; |
|
return (ptr); |
|
} |
|
|
|
void * |
|
buffer_get_string_ptr(Buffer *buffer, u_int *length_ptr) |
|
{ |
|
void *ret; |
|
|
|
if ((ret = buffer_get_string_ptr_ret(buffer, length_ptr)) == NULL) |
|
fatal("buffer_get_string_ptr: buffer error"); |
return (ret); |
return (ret); |
} |
} |
|
|