Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / patches / patch-hurd-path-max.patch
1 See <http://lists.gnu.org/archive/html/bug-patch/2015-06/msg00009.html>
2
3 From 0507dfad5f060161f01840067e1bb1615257b636 Mon Sep 17 00:00:00 2001
4 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
5 Date: Mon, 8 Jun 2015 17:27:56 +0200
6 Subject: [PATCH] Do not rely on PATH_MAX when reading a symlink target.
7
8 * src/util.c (move_file, copy_file): Use 'fromst->st_size + 1' and
9 'tost->st_size + 1' for the allocation, and 'fromst->st_size' and
10 'tost->st_size' instead of PATH_MAX. Fixes compilation on GNU/Hurd.
11 ---
12 src/util.c | 8 ++++----
13 1 file changed, 4 insertions(+), 4 deletions(-)
14
15 diff --git a/src/util.c b/src/util.c
16 index 82a7e37..c4c0f9d 100644
17 --- a/src/util.c
18 +++ b/src/util.c
19 @@ -460,12 +460,12 @@ move_file (char const *from, bool *from_needs_removal,
20
21 /* FROM contains the contents of the symlink we have patched; need
22 to convert that back into a symlink. */
23 - char *buffer = xmalloc (PATH_MAX);
24 + char *buffer = xmalloc (fromst->st_size + 1);
25 int fd, size = 0, i;
26
27 if ((fd = safe_open (from, O_RDONLY | O_BINARY, 0)) < 0)
28 pfatal ("Can't reopen file %s", quotearg (from));
29 - while ((i = read (fd, buffer + size, PATH_MAX - size)) > 0)
30 + while ((i = read (fd, buffer + size, fromst->st_size - size)) > 0)
31 size += i;
32 if (i != 0 || close (fd) != 0)
33 read_fatal ();
34 @@ -610,9 +610,9 @@ copy_file (char const *from, char const *to, struct stat *tost,
35
36 if (S_ISLNK (mode))
37 {
38 - char *buffer = xmalloc (PATH_MAX);
39 + char *buffer = xmalloc (tost->st_size + 1);
40
41 - if (safe_readlink (from, buffer, PATH_MAX) < 0)
42 + if (safe_readlink (from, buffer, tost->st_size) < 0)
43 pfatal ("Can't read %s %s", "symbolic link", from);
44 if (safe_symlink (buffer, to) != 0)
45 pfatal ("Can't create %s %s", "symbolic link", to);
46 --
47 2.4.2
48