You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-db/postgresql/files/postgresql-9.1-tz-dir-overf...

30 lines
1.1 KiB

--- a/src/timezone/pgtz.c 2015-02-02 15:45:23.000000000 -0500
+++ b/src/timezone/pgtz.c 2015-04-07 14:21:22.341832190 -0400
@@ -586,6 +586,12 @@
if (direntry->d_name[0] == '.')
continue;
+ /* if current working directory has the same name as current direntry name,
+ * then skip as this is a recursive fs loop
+ */
+ if (strncmp(direntry->d_name,tzdirsub,strlen(direntry->d_name)) == 0)
+ continue;
+
snprintf(tzdir + tzdir_orig_len, MAXPGPATH - tzdir_orig_len,
"/%s", direntry->d_name);
@@ -1615,6 +1621,13 @@
if (direntry->d_name[0] == '.')
continue;
+ /* copy current working directory so that there is no risk of modification by basename(),
+ * and compare to current direntry name; skip if they are the same as this is a recursive fs loop
+ */
+ snprintf(fullname, MAXPGPATH, "%s", dir->dirname[dir->depth]);
+ if (strncmp(direntry->d_name,basename(fullname),strlen(direntry->d_name)) == 0)
+ continue;
+
snprintf(fullname, MAXPGPATH, "%s/%s",
dir->dirname[dir->depth], direntry->d_name);
if (stat(fullname, &statbuf) != 0)