From 50671520ef98d68d4eb26e09d5249de321b8fef9 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Sun, 16 Aug 2020 17:55:22 -0700 Subject: [PATCH 1/2] Xfuncproto: define _X_NONSTRING for __attribute__((nonstring)) Bumps xproto version to 7.0.33 Signed-off-by: Alan Coopersmith Reviewed-by: Matt Turner --- include/X11/Xfuncproto.h | 8 ++++++++ xproto.pc.in | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/X11/Xfuncproto.h b/include/X11/Xfuncproto.h index 89bc96f..f689073 100644 --- a/include/X11/Xfuncproto.h +++ b/include/X11/Xfuncproto.h @@ -218,4 +218,12 @@ in this Software without prior written authorization from The Open Group. # define _X_NOTSAN #endif +/* Mark a char array/pointer as not containing a NUL-terminated string */ +/* requires xproto >= 7.0.33 */ +#if __has_attribute(nonstring) +# define _X_NONSTRING __attribute__((nonstring)) +#else +# define _X_NONSTRING +#endif + #endif /* _XFUNCPROTO_H_ */ diff --git a/xproto.pc.in b/xproto.pc.in index 9274236..9e288c7 100644 --- a/xproto.pc.in +++ b/xproto.pc.in @@ -4,5 +4,5 @@ includex11dir=@includedir@/X11 Name: Xproto Description: Xproto headers -Version: 7.0.32 +Version: 7.0.33 Cflags: -I${includedir} -- GitLab From 21e05da99c855481b638a7789ad5600b5b283680 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Sun, 16 Aug 2020 17:57:10 -0700 Subject: [PATCH 2/2] XKB: Mark key name arrays as not NUL-terminated strings They are fixed length (4 characters), and don't need NUL-terminators. This makes gcc stop warning when they're not NUL-terminated, and instead warn if they are passed to functions expecting NUL-terminated strings. Signed-off-by: Alan Coopersmith Reviewed-by: Matt Turner --- include/X11/extensions/XKBproto.h | 7 ++++--- include/X11/extensions/XKBstr.h | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/include/X11/extensions/XKBproto.h b/include/X11/extensions/XKBproto.h index 43b18d8..6eaec95 100644 --- a/include/X11/extensions/XKBproto.h +++ b/include/X11/extensions/XKBproto.h @@ -28,6 +28,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #define _XKBPROTO_H_ #include +#include #include #define Window CARD32 @@ -675,7 +676,7 @@ typedef struct _xkbRowWireDesc { #define sz_xkbRowWireDesc 8 typedef struct _xkbKeyWireDesc { - CARD8 name[XkbKeyNameLength]; + CARD8 name[XkbKeyNameLength] _X_NONSTRING; INT16 gap; CARD8 shapeNdx; CARD8 colorNdx; @@ -698,8 +699,8 @@ typedef struct _xkbOverlayRowWireDesc { #define sz_xkbOverlayRowWireDesc 4 typedef struct _xkbOverlayKeyWireDesc { - CARD8 over[XkbKeyNameLength]; - CARD8 under[XkbKeyNameLength]; + CARD8 over[XkbKeyNameLength] _X_NONSTRING; + CARD8 under[XkbKeyNameLength] _X_NONSTRING; } xkbOverlayKeyWireDesc; #define sz_xkbOverlayKeyWireDesc 8 diff --git a/include/X11/extensions/XKBstr.h b/include/X11/extensions/XKBstr.h index ef26911..eaefae8 100644 --- a/include/X11/extensions/XKBstr.h +++ b/include/X11/extensions/XKBstr.h @@ -27,6 +27,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #ifndef _XKBSTR_H_ #define _XKBSTR_H_ +#include #include #define XkbCharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f)) @@ -401,12 +402,12 @@ typedef struct _XkbIndicatorRec { } XkbIndicatorRec,*XkbIndicatorPtr; typedef struct _XkbKeyNameRec { - char name[XkbKeyNameLength]; + char name[XkbKeyNameLength] _X_NONSTRING; } XkbKeyNameRec,*XkbKeyNamePtr; typedef struct _XkbKeyAliasRec { - char real[XkbKeyNameLength]; - char alias[XkbKeyNameLength]; + char real[XkbKeyNameLength] _X_NONSTRING; + char alias[XkbKeyNameLength] _X_NONSTRING; } XkbKeyAliasRec,*XkbKeyAliasPtr; /* -- GitLab