summaryrefslogtreecommitdiff
path: root/src/SMlibint.h
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2022-09-07 12:44:33 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2022-12-04 12:26:26 -0800
commit12812dca0f852178d8cc3813e4056b396a8f3ab5 (patch)
tree193d492c468ad6cbca1c7d50142555ea15f97c00 /src/SMlibint.h
parentbb02359ff464d51cbb29d3c93e7e55f3649e5b91 (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.h13
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).