1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-12 12:23:50 +03:00

r14043: After discussion with Jerry revert part of the

Coverity null-ref patch - put prs_rpcbuffer_p
back to the way it was (with an additional
coverity paranoia check) - move the real test
into rpcbuf_alloc_size instead.
Jeremy.
This commit is contained in:
Jeremy Allison
2006-03-08 17:50:44 +00:00
committed by Gerald (Jerry) Carter
parent 4e5df4cb64
commit f74993e65c

View File

@@ -108,37 +108,22 @@ BOOL prs_rpcbuffer_p(const char *desc, prs_struct *ps, int depth, RPC_BUFFER **b
data_p = *buffer ? 0xf000baaa : 0;
if ( !prs_uint32("ptr", ps, depth, &data_p )) {
if ( !prs_uint32("ptr", ps, depth, &data_p ))
return False;
}
/* We must always return a valid buffer pointer even if the
client didn't send one - just leave it initialized to null. */
if ( UNMARSHALLING(ps) ) {
if ( !(*buffer = PRS_ALLOC_MEM(ps, RPC_BUFFER, 1)) ) {
return False;
}
}
/* we're done if there is no data */
if (!data_p) {
if (UNMARSHALLING(ps)) {
RPC_BUFFER *pbuffer = *buffer;
/* On unmarshalling we must return a valid,
but zero size value RPC_BUFFER. */
pbuffer->size = 0;
pbuffer->string_at_end = 0;
if (!prs_init(&pbuffer->prs, 0, prs_get_mem_context(ps), UNMARSHALL)) {
return False;
}
}
if ( !data_p )
return True;
}
/* Coverity paranoia. Buffer must be valid. */
if (!*buffer) {
return False;
if ( UNMARSHALLING(ps) ) {
if ( !(*buffer = PRS_ALLOC_MEM(ps, RPC_BUFFER, 1)) )
return False;
} else {
/* Marshalling case. - coverity paranoia - should already be ok if data_p != 0 */
if (!*buffer) {
return True;
}
}
return prs_rpcbuffer( desc, ps, depth, *buffer);
@@ -158,7 +143,11 @@ BOOL rpcbuf_alloc_size(RPC_BUFFER *buffer, uint32 buffer_size)
if ( buffer_size == 0x0 )
return True;
if (!buffer) {
return False;
}
ps= &buffer->prs;
/* damn, I'm doing the reverse operation of prs_grow() :) */