diff options
author | Stefano Garzarella <sgarzare@redhat.com> | 2019-09-03 10:54:11 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2019-09-03 11:01:58 -0400 |
commit | d1208b5de7b52172a34e3a7262e96f99830c9770 (patch) | |
tree | 46176eefc9ce7d093909d18c6688e71d27e4f48b /src | |
parent | e51590d6c4ab61f1a22a2f47104053fe2966ecdd (diff) | |
download | ti-rpc-d1208b5de7b52172a34e3a7262e96f99830c9770.tar.gz |
xdr: add a defensive mask in xdr_int64_t() and xdr_u_int64_t()
In order to be more defensive, we should mask bits of u_int64_t
value if we want to use only the first 32bit.
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/xdr.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -877,7 +877,8 @@ xdr_int64_t(xdrs, llp) if (XDR_GETLONG(xdrs, (long *)&ul[1]) == FALSE) return (FALSE); *llp = (int64_t) - (((u_int64_t)ul[0] << 32) | ((u_int64_t)ul[1])); + (((u_int64_t)ul[0] << 32) | + ((u_int64_t)(ul[1]) & 0xffffffff)); return (TRUE); case XDR_FREE: return (TRUE); @@ -910,7 +911,8 @@ xdr_u_int64_t(xdrs, ullp) if (XDR_GETLONG(xdrs, (long *)&ul[1]) == FALSE) return (FALSE); *ullp = (u_int64_t) - (((u_int64_t)ul[0] << 32) | ((u_int64_t)ul[1])); + (((u_int64_t)ul[0] << 32) | + ((u_int64_t)(ul[1]) & 0xffffffff)); return (TRUE); case XDR_FREE: return (TRUE); |