Patches to libXau

tlaronde at kergis.com tlaronde at kergis.com
Thu Feb 1 13:59:18 UTC 2024


Hello,

libXau has status "Unmaintained"

I'd like to apply two patches:

1) Test for __GNUC__ as well as __clang__ since gcc has no attributes
for __attribute((malloc)) as well;

2) Add a feature test to explicit_memset(3) supplementary to
explicit_bzero(3), since bzero(3) is deprecated (even removed from
current POSIX), and explicit_memset(3) is proposed for standard and
supported at least on BSDs.

How to propose the patches?

FYI, the two sets are attached.
-- 
        Thierry Laronde <tlaronde +AT+ kergis +dot+ com>
                     http://www.kergis.com/
                    http://kertex.kergis.com/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C
-------------- next part --------------
diff --git a/include/X11/Xauth.h b/include/X11/Xauth.h
index 51e913f..f6c0c6e 100644
--- a/include/X11/Xauth.h
+++ b/include/X11/Xauth.h
@@ -78,8 +78,8 @@ _XFUNCPROTOBEGIN
 #endif
 
 #if __has_attribute(malloc)
-# if defined(__clang__)
-/* Clang does not support the optional deallocator argument */
+# if defined(__clang__) || defined(__GNUC__)
+/* Clang or gcc do not support the optional deallocator argument */
 #  define XAU_MALLOC_ATTRIBUTE(X) __attribute__((malloc))
 # else
 #  define XAU_MALLOC_ATTRIBUTE(X) __attribute__((malloc X))
-------------- next part --------------
diff --git a/AuDispose.c b/AuDispose.c
index 791232a..a449390 100644
--- a/AuDispose.c
+++ b/AuDispose.c
@@ -40,6 +40,8 @@ XauDisposeAuth (Xauth *auth)
 	if (auth->data) {
 #ifdef HAVE_EXPLICIT_BZERO
 	    (void) explicit_bzero (auth->data, auth->data_length);
+#elif HAVE_EXPLICIT_MEMSET
+	    (void) explicit_memset (auth->data, 0, auth->data_length);
 #else
 	    (void) bzero (auth->data, auth->data_length);
 #endif
diff --git a/AuRead.c b/AuRead.c
index 93774b0..649a1d8 100644
--- a/AuRead.c
+++ b/AuRead.c
@@ -58,6 +58,8 @@ read_counted_string (unsigned short *countp, char **stringp, FILE *file)
 	if (fread (data, sizeof (char), len, file) != len) {
 #ifdef HAVE_EXPLICIT_BZERO
 	    explicit_bzero (data, len);
+#elif HAVE_EXPLICIT_MEMSET
+	    explicit_memset (data, 0, len);
 #else
 	    bzero (data, len);
 #endif
@@ -107,6 +109,8 @@ XauReadAuth (FILE *auth_file)
     if (local.data) {
 #ifdef HAVE_EXPLICIT_BZERO
 	explicit_bzero (local.data, local.data_length);
+#elif HAVE_EXPLICIT_MEMSET
+	explicit_memset (local.data, 0, local.data_length);
 #else
 	bzero (local.data, local.data_length);
 #endif
diff --git a/configure.ac b/configure.ac
index 240610c..f062dbb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -45,7 +45,7 @@ XORG_DEFAULT_OPTIONS
 AC_PROG_LN_S
 
 # Checks for library functions.
-AC_CHECK_FUNCS([explicit_bzero pathconf])
+AC_CHECK_FUNCS([explicit_bzero explicit_memset pathconf])
 
 # Obtain compiler/linker options for dependencies
 PKG_CHECK_MODULES(XAU, xproto)
diff --git a/meson.build b/meson.build
index 6ca975a..a3dec49 100644
--- a/meson.build
+++ b/meson.build
@@ -19,7 +19,7 @@ cc = meson.get_compiler('c')
 
 lib_args = []
 
-foreach f : ['explicit_bzero', 'pathconf']
+foreach f : ['explicit_bzero', 'explicit_memset', 'pathconf']
   if cc.has_function(f)
     lib_args += '-DHAVE_ at 0@'.format(f.to_upper())
   endif
@@ -93,4 +93,4 @@ pkg.generate(
   requires : 'xproto',
 )
 
-subdir('man')
\ No newline at end of file
+subdir('man')


More information about the xorg-devel mailing list