]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/glibc/glibc-rh809602.patch
pakfire: use correct tree on x86_64.
[ipfire-2.x.git] / src / patches / glibc / glibc-rh809602.patch
CommitLineData
12788f63
MT
1diff -rup a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c
2--- a/nscd/nscd_getserv_r.c 2012-04-04 16:37:27.873951850 -0600
3+++ b/nscd/nscd_getserv_r.c 2012-04-04 16:37:49.904837348 -0600
4@@ -124,6 +123,7 @@ nscd_getserv_r (const char *crit, size_t
5 s_name = (char *) (&found->data[0].servdata + 1);
6 serv_resp = found->data[0].servdata;
7 s_proto = s_name + serv_resp.s_name_len;
8+ alloca_aliases_len = 1;
9 aliases_len = (uint32_t *) (s_proto + serv_resp.s_proto_len);
10 aliases_list = ((char *) aliases_len
11 + serv_resp.s_aliases_cnt * sizeof (uint32_t));
12@@ -154,7 +154,9 @@ nscd_getserv_r (const char *crit, size_t
13 + (serv_resp.s_aliases_cnt
14 * sizeof (uint32_t)));
15 if (alloca_aliases_len)
16- tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t));
17+ tmp = alloca_account (serv_resp.s_aliases_cnt
18+ * sizeof (uint32_t),
19+ alloca_used);
20 else
21 {
22 tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t));
23@@ -249,8 +251,9 @@ nscd_getserv_r (const char *crit, size_t
24 + (serv_resp.s_aliases_cnt
25 * sizeof (uint32_t)));
26 if (alloca_aliases_len)
27- aliases_len = alloca (serv_resp.s_aliases_cnt
28- * sizeof (uint32_t));
29+ aliases_len = alloca_account (serv_resp.s_aliases_cnt
30+ * sizeof (uint32_t),
31+ alloca_used);
32 else
33 {
34 aliases_len = malloc (serv_resp.s_aliases_cnt
35@@ -368,7 +371,11 @@ nscd_getserv_r (const char *crit, size_t
36 }
37
38 if (retval != -1)
39- goto retry;
40+ {
41+ if (!alloca_aliases_len)
42+ free ((void *) aliases_len);
43+ goto retry;
44+ }
45 }
46
47 if (!alloca_aliases_len)