[openssh-commits] [openssh] 01/01: Prevent name collisions with system glob (bz#2463)

git+noreply at mindrot.org git+noreply at mindrot.org
Thu Oct 29 10:53:57 AEDT 2015


This is an automated email from the git hooks/post-receive script.

dtucker pushed a commit to branch master
in repository openssh.

commit 8db134e7f457bcb069ec72bc4ee722e2af557c69
Author: Darren Tucker <dtucker at zip.com.au>
Date:   Thu Oct 29 10:48:23 2015 +1100

    Prevent name collisions with system glob (bz#2463)
    
    Move glob.h from includes.h to the only caller (sftp) and override the
    names for the symbols.  This prevents name collisions with the system glob
    in the case where something other than ssh uses it (eg kerberos).  With
    jjelen at redhat.com, ok djm@
---
 defines.h                       | 7 +++++++
 includes.h                      | 6 ------
 openbsd-compat/glob.c           | 1 +
 openbsd-compat/glob.h           | 8 ++++++--
 openbsd-compat/openbsd-compat.h | 1 -
 sftp-client.h                   | 6 ++++++
 6 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/defines.h b/defines.h
index fa0ccba..a438ddd 100644
--- a/defines.h
+++ b/defines.h
@@ -850,4 +850,11 @@ struct winsize {
 # endif /* gcc version */
 #endif /* __predict_true */
 
+#if defined(HAVE_GLOB_H) && defined(GLOB_HAS_ALTDIRFUNC) && \
+    defined(GLOB_HAS_GL_MATCHC) && defined(GLOB_HAS_GL_STATV) && \
+    defined(HAVE_DECL_GLOB_NOMATCH) &&  HAVE_DECL_GLOB_NOMATCH != 0 && \
+    !defined(BROKEN_GLOB)
+# define USE_SYSTEM_GLOB
+#endif
+
 #endif /* _DEFINES_H */
diff --git a/includes.h b/includes.h
index 2893a54..497a038 100644
--- a/includes.h
+++ b/includes.h
@@ -32,12 +32,6 @@
 #ifdef HAVE_BSTRING_H
 # include <bstring.h>
 #endif
-#if defined(HAVE_GLOB_H) && defined(GLOB_HAS_ALTDIRFUNC) && \
-    defined(GLOB_HAS_GL_MATCHC) && defined(GLOB_HAS_GL_STATV) && \
-    defined(HAVE_DECL_GLOB_NOMATCH) &&  HAVE_DECL_GLOB_NOMATCH != 0 && \
-    !defined(BROKEN_GLOB)
-# include <glob.h>
-#endif
 #ifdef HAVE_ENDIAN_H
 # include <endian.h>
 #endif
diff --git a/openbsd-compat/glob.c b/openbsd-compat/glob.c
index 742b4b9..7c97e67 100644
--- a/openbsd-compat/glob.c
+++ b/openbsd-compat/glob.c
@@ -59,6 +59,7 @@
  */
 
 #include "includes.h"
+#include "glob.h"
 
 #include <sys/types.h>
 #include <sys/stat.h>
diff --git a/openbsd-compat/glob.h b/openbsd-compat/glob.h
index f8a7fa5..f069a05 100644
--- a/openbsd-compat/glob.h
+++ b/openbsd-compat/glob.h
@@ -42,11 +42,15 @@
     !defined(HAVE_DECL_GLOB_NOMATCH) || HAVE_DECL_GLOB_NOMATCH == 0 || \
     defined(BROKEN_GLOB)
 
-#ifndef _GLOB_H_
-#define	_GLOB_H_
+#ifndef _COMPAT_GLOB_H_
+#define	_COMPAT_GLOB_H_
 
 #include <sys/stat.h>
 
+# define glob_t _ssh_compat_glob_t
+# define glob(a, b, c, d)  _ssh__compat_glob(a, b, c, d)
+# define globfree(a)  _ssh__compat_globfree(a)
+
 struct stat;
 typedef struct {
 	int gl_pathc;		/* Count of total paths so far. */
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index 1ff7114..8cc8a11 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -39,7 +39,6 @@
 /* OpenBSD function replacements */
 #include "base64.h"
 #include "sigact.h"
-#include "glob.h"
 #include "readpassphrase.h"
 #include "vis.h"
 #include "getrrsetbyname.h"
diff --git a/sftp-client.h b/sftp-client.h
index f814b07..14a3b81 100644
--- a/sftp-client.h
+++ b/sftp-client.h
@@ -21,6 +21,12 @@
 #ifndef _SFTP_CLIENT_H
 #define _SFTP_CLIENT_H
 
+#ifdef USE_SYSTEM_GLOB
+# include <glob.h>
+#else
+# include "openbsd-compat/glob.h"
+#endif
+
 typedef struct SFTP_DIRENT SFTP_DIRENT;
 
 struct SFTP_DIRENT {

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list