Annotation of /trunk/pciutils/patches/pciutils-2.2.4-buf.patch
Parent Directory | Revision Log
Revision 153 -
(hide annotations)
(download)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 1611 byte(s)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 1611 byte(s)
-import
1 | niro | 153 | --- pciutils-2.2.4/lib/names.c.buf 2006-09-09 12:46:39.000000000 +0200 |
2 | +++ pciutils-2.2.4/lib/names.c 2007-01-26 13:47:01.000000000 +0100 | ||
3 | @@ -372,12 +372,27 @@ | ||
4 | res = snprintf(buf, size, "%s", num); | ||
5 | else if (!name) | ||
6 | res = snprintf(buf, size, ((flags & PCI_LOOKUP_MIXED) ? "%s [%s]" : "%s %s"), unknown, num); | ||
7 | - else if (!(flags & PCI_LOOKUP_MIXED)) | ||
8 | + else if (!(flags & PCI_LOOKUP_MIXED)) | ||
9 | res = snprintf(buf, size, "%s", name); | ||
10 | else | ||
11 | res = snprintf(buf, size, "%s [%s]", name, num); | ||
12 | - if (res < 0 || res >= size) | ||
13 | + if (res < 0 || res >= size) { | ||
14 | + if (name && res >= size) { | ||
15 | + int nlen = strlen(name); | ||
16 | + if (nlen > (res - size) + 5) { | ||
17 | + char *nname = strdup(name); | ||
18 | + int off = nlen - (res - size) - 5; | ||
19 | + if (nname) { | ||
20 | + nname[off] = '.'; | ||
21 | + nname[off+1] = '.'; | ||
22 | + nname[off+2] = '.'; | ||
23 | + nname[off+3] = 0; | ||
24 | + return format_name(buf, size, flags, nname, num, unknown); | ||
25 | + } | ||
26 | + } | ||
27 | + } | ||
28 | return "<pci_lookup_name: buffer too small>"; | ||
29 | + } | ||
30 | else | ||
31 | return buf; | ||
32 | } | ||
33 | @@ -408,8 +423,24 @@ | ||
34 | else /* v && !d */ | ||
35 | res = snprintf(buf, size, "%s Unknown device %s", v, num+5); | ||
36 | } | ||
37 | - if (res < 0 || res >= size) | ||
38 | + if (res < 0 || res >= size) { | ||
39 | + if (d && res >= size) { | ||
40 | + int nlen = strlen(d); | ||
41 | + if (nlen > (res - size) + 5) { | ||
42 | + char *nname = strdup(d); | ||
43 | + int off = nlen - (res - size) - 5; | ||
44 | + if (nname) { | ||
45 | + nname[off] = '.'; | ||
46 | + nname[off+1] = '.'; | ||
47 | + nname[off+2] = '.'; | ||
48 | + nname[off+3] = 0; | ||
49 | + return format_name_pair(buf, size, flags, v, nname, num); | ||
50 | + } | ||
51 | + } | ||
52 | + } | ||
53 | + | ||
54 | return "<pci_lookup_name: buffer too small>"; | ||
55 | + } | ||
56 | else | ||
57 | return buf; | ||
58 | } |