Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix hg_proc_save_ptr() error handling and allocation (when using XDR)
hg_proc_hg_bulk_t() uses hg_proc_save_ptr() to allocate buffer space for encoding/decoding bulk handles, but it does not check the return value of hg_proc_save_ptr(). hg_proc_save_ptr() returns NULL on memory allocation failure. update hg_proc_hg_bulk_t() to check the return value of hg_proc_save_ptr() to see if it is NULL. Update hg_proc_save_ptr(): When hg_proc_save_ptr() is compiled with !HG_HAS_XDR we should check the return value of hg_proc_set_size() for resize errors and fail if hg_proc_set_size() fails. When hg_proc_save_ptr() is compiled with HG_HAS_XDR, we should follow the XDR BYTES_PER_XDR_UNIT rounding rules just in case the size is not a multiple of BYTES_PER_XDR_UNIT. If we run out of preallocated space we should fail (since XDR does not grow buffers). Simplify code to use xdr_inline() to allocate memory rather than using xdr_getpos()/xdr_setpos(). Sanity check return value of xdr_inline() to ensure that it is in sync with the initial value of hg_proc->current_buf->buf_ptr. Includes formatting updates from Jerome.
- Loading branch information