diff options
author | Alan Coopersmith <alan.coopersmith@oracle.com> | 2022-09-07 12:44:33 -0700 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@oracle.com> | 2022-12-04 12:26:26 -0800 |
commit | 12812dca0f852178d8cc3813e4056b396a8f3ab5 (patch) | |
tree | 193d492c468ad6cbca1c7d50142555ea15f97c00 /src/SMlibint.h | |
parent | bb02359ff464d51cbb29d3c93e7e55f3649e5b91 (diff) |
Handle arrays too large to fit in iceConn buffers
Fixes numerous gcc warnings of the form:
sm_client.c: In function ‘SmcOpenConnection’:
SMlibint.h:109:25: warning: potential null pointer dereference [-Wnull-dereference]
*((CARD32 *) _pBuf) = _val; \
SMlibint.h:160:5: note: in expansion of macro ‘STORE_CARD32’
STORE_CARD32 (_pBuf, (CARD32) _len); \
^~~~~~~~~~~~
sm_client.c:207:5: note: in expansion of macro ‘STORE_ARRAY8’
STORE_ARRAY8 (pData, len, previousId);
^~~~~~~~~~~~
v2: Raise required libICE version to 1.1.0 to get the updated
IceGetHeaderExtra macro definition needed for this to work correctly.
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Diffstat (limited to 'src/SMlibint.h')
-rw-r--r-- | src/SMlibint.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/SMlibint.h b/src/SMlibint.h index 94f13e9..197a561 100644 --- a/src/SMlibint.h +++ b/src/SMlibint.h @@ -182,6 +182,19 @@ in this Software without prior written authorization from The Open Group. } \ } +/* + * Send an ARRAY8 that doesn't fit in the iceConn send buffer. + */ +#define SEND_ARRAY8(_iceConn, _len, _array8) \ +{ \ + char _padding[7] = { 0 }; \ + CARD32 _array_len = (CARD32) _len; \ + IceWriteData32 (_iceConn, 4, &_array_len); \ + if (_len) \ + IceSendData (_iceConn, _len, (char *) _array8); \ + IceSendData (_iceConn, PAD64 (4 + _len), _padding); \ +} + /* * Client replies not processed by callbacks (we block for them). |