]> git.pld-linux.org Git - packages/device-mapper.git/commitdiff
- fix null pointer dereference on 'number' parameter. auto/th/device-mapper-1_02_07-0_15
authorElan Ruusamäe <glen@pld-linux.org>
Tue, 23 May 2006 19:04:09 +0000 (19:04 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
  recent lvm2 (lvm2-2.02.06) could call _get_proc_number() having it NULL:
Breakpoint 2, _get_proc_number (file=0xb7f97a08 "/proc/devices", name=0xb7f97a03 "misc", number=0xbffc4abc)
Breakpoint 2, _get_proc_number (file=0xb7f97a24 "/proc/misc", name=0xb7f97a16 "device-mapper", number=0xbffc4ab8)
Breakpoint 2, _get_proc_number (file=0xb7f97a08 "/proc/devices", name=0xb7f97a16 "device-mapper", number=0x0)
  so just don't touch 'number' variable for temporary storage.

Changed files:
    device-mapper-klibc.patch -> 1.4

device-mapper-klibc.patch

index 56011549c278d16b4b1dfccbf7cc4df7de67cd98..3503c85d34d4ad4c5cfca43ed872f296c06c95f0 100644 (file)
@@ -83,7 +83,7 @@ diff -urN device-mapper.1.02.05.org/lib/ioctl/libdm-iface.c device-mapper.1.02.0
 +                              size++;
 +              } while (num > 0 && buf[size - 1] != '\n');
 +              buf[size] = '\0';
-+              if (sscanf(buf, "%d %255s\n", number, &nm[0]) == 2) {
++              if (sscanf(buf, "%d %255s\n", &num, &nm[0]) == 2) {
                        if (!strcmp(name, nm)) {
                                if (number) {
                                        *number = num;
@@ -96,7 +96,7 @@ diff -urN device-mapper.1.02.05.org/lib/ioctl/libdm-iface.c device-mapper.1.02.0
 -              } while (c != EOF && c != '\n');
 -      }
 +              }
-+      } while (num > 0);
++      } while (size > 0);
        fclose(fl);
  
        if (number) {
This page took 0.074486 seconds and 4 git commands to generate.