summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@zip.com.au>2015-10-29 10:48:23 +1100
committerDarren Tucker <dtucker@zip.com.au>2015-10-29 10:48:23 +1100
commit8db134e7f457bcb069ec72bc4ee722e2af557c69 (patch)
treea0d16eb42cc7d97396504b75163b812468811269
parent86c10dbbef6a5800d2431a66cf7f41a954bb62b5 (diff)
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@
-rw-r--r--defines.h7
-rw-r--r--includes.h6
-rw-r--r--openbsd-compat/glob.c1
-rw-r--r--openbsd-compat/glob.h8
-rw-r--r--openbsd-compat/openbsd-compat.h1
-rw-r--r--sftp-client.h6
6 files changed, 20 insertions, 9 deletions
diff --git a/defines.h b/defines.h
index fa0ccba7c..a438ddd74 100644
--- a/defines.h
+++ b/defines.h
@@ -850,4 +850,11 @@ struct winsize {
850# endif /* gcc version */ 850# endif /* gcc version */
851#endif /* __predict_true */ 851#endif /* __predict_true */
852 852
853#if defined(HAVE_GLOB_H) && defined(GLOB_HAS_ALTDIRFUNC) && \
854 defined(GLOB_HAS_GL_MATCHC) && defined(GLOB_HAS_GL_STATV) && \
855 defined(HAVE_DECL_GLOB_NOMATCH) && HAVE_DECL_GLOB_NOMATCH != 0 && \
856 !defined(BROKEN_GLOB)
857# define USE_SYSTEM_GLOB
858#endif
859
853#endif /* _DEFINES_H */ 860#endif /* _DEFINES_H */
diff --git a/includes.h b/includes.h
index 2893a54cd..497a038b2 100644
--- a/includes.h
+++ b/includes.h
@@ -32,12 +32,6 @@
32#ifdef HAVE_BSTRING_H 32#ifdef HAVE_BSTRING_H
33# include <bstring.h> 33# include <bstring.h>
34#endif 34#endif
35#if defined(HAVE_GLOB_H) && defined(GLOB_HAS_ALTDIRFUNC) && \
36 defined(GLOB_HAS_GL_MATCHC) && defined(GLOB_HAS_GL_STATV) && \
37 defined(HAVE_DECL_GLOB_NOMATCH) && HAVE_DECL_GLOB_NOMATCH != 0 && \
38 !defined(BROKEN_GLOB)
39# include <glob.h>
40#endif
41#ifdef HAVE_ENDIAN_H 35#ifdef HAVE_ENDIAN_H
42# include <endian.h> 36# include <endian.h>
43#endif 37#endif
diff --git a/openbsd-compat/glob.c b/openbsd-compat/glob.c
index 742b4b954..7c97e67f5 100644
--- a/openbsd-compat/glob.c
+++ b/openbsd-compat/glob.c
@@ -59,6 +59,7 @@
59 */ 59 */
60 60
61#include "includes.h" 61#include "includes.h"
62#include "glob.h"
62 63
63#include <sys/types.h> 64#include <sys/types.h>
64#include <sys/stat.h> 65#include <sys/stat.h>
diff --git a/openbsd-compat/glob.h b/openbsd-compat/glob.h
index f8a7fa5ff..f069a05dc 100644
--- a/openbsd-compat/glob.h
+++ b/openbsd-compat/glob.h
@@ -42,11 +42,15 @@
42 !defined(HAVE_DECL_GLOB_NOMATCH) || HAVE_DECL_GLOB_NOMATCH == 0 || \ 42 !defined(HAVE_DECL_GLOB_NOMATCH) || HAVE_DECL_GLOB_NOMATCH == 0 || \
43 defined(BROKEN_GLOB) 43 defined(BROKEN_GLOB)
44 44
45#ifndef _GLOB_H_ 45#ifndef _COMPAT_GLOB_H_
46#define _GLOB_H_ 46#define _COMPAT_GLOB_H_
47 47
48#include <sys/stat.h> 48#include <sys/stat.h>
49 49
50# define glob_t _ssh_compat_glob_t
51# define glob(a, b, c, d) _ssh__compat_glob(a, b, c, d)
52# define globfree(a) _ssh__compat_globfree(a)
53
50struct stat; 54struct stat;
51typedef struct { 55typedef struct {
52 int gl_pathc; /* Count of total paths so far. */ 56 int gl_pathc; /* Count of total paths so far. */
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index 1ff7114ef..8cc8a11b7 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -39,7 +39,6 @@
39/* OpenBSD function replacements */ 39/* OpenBSD function replacements */
40#include "base64.h" 40#include "base64.h"
41#include "sigact.h" 41#include "sigact.h"
42#include "glob.h"
43#include "readpassphrase.h" 42#include "readpassphrase.h"
44#include "vis.h" 43#include "vis.h"
45#include "getrrsetbyname.h" 44#include "getrrsetbyname.h"
diff --git a/sftp-client.h b/sftp-client.h
index f814b07d6..14a3b8182 100644
--- a/sftp-client.h
+++ b/sftp-client.h
@@ -21,6 +21,12 @@
21#ifndef _SFTP_CLIENT_H 21#ifndef _SFTP_CLIENT_H
22#define _SFTP_CLIENT_H 22#define _SFTP_CLIENT_H
23 23
24#ifdef USE_SYSTEM_GLOB
25# include <glob.h>
26#else
27# include "openbsd-compat/glob.h"
28#endif
29
24typedef struct SFTP_DIRENT SFTP_DIRENT; 30typedef struct SFTP_DIRENT SFTP_DIRENT;
25 31
26struct SFTP_DIRENT { 32struct SFTP_DIRENT {