]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - elf/sln.c
Fix bad pointer / leak in regex code
[thirdparty/glibc.git] / elf / sln.c
index f52cb9f44a85bbeb83933b1b497db85232ef85c8..57d29e94e2d88cecd0e4ab91c58aff50e67eaafe 100644 (file)
--- a/elf/sln.c
+++ b/elf/sln.c
@@ -1,5 +1,5 @@
 /* `sln' program to create symbolic links between files.
-   Copyright (C) 1998-2016 Free Software Foundation, Inc.
+   Copyright (C) 1998-2019 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
 #include <error.h>
 #include <errno.h>
 #include <libintl.h>
 
 #define PACKAGE _libc_intl_domainname
 
-#if !defined S_ISDIR && defined S_IFDIR
-#define        S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#endif
-
 static int makesymlink (const char *src, const char *dest);
 static int makesymlinks (const char *file);
 static void usage (void);
@@ -89,9 +81,6 @@ usage (void)
 static int
 makesymlinks (const char *file)
 {
-#ifndef PATH_MAX
-#define PATH_MAX 4095
-#endif
   char *buffer = NULL;
   size_t bufferlen = 0;
   int ret;
@@ -190,11 +179,7 @@ makesymlink (const char *src, const char *dest)
       return -1;
     }
 
-#ifdef S_ISLNK
   if (symlink (src, dest) == 0)
-#else
-  if (link (src, dest) == 0)
-#endif
     {
       /* Destination must exist by now. */
       if (access (dest, F_OK))