btrfs-progs: don't overrun name in find-collisions
authorZach Brown <zab@redhat.com>
Mon, 7 Oct 2013 21:42:56 +0000 (14:42 -0700)
committerChris Mason <chris.mason@fusionio.com>
Wed, 16 Oct 2013 12:23:13 +0000 (08:23 -0400)
find_collision() allocates name_len bytes for its sub array so the index
must be less than name_len.  This was found by static analysis.

Signed-off-by: Zach Brown <zab@redhat.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
btrfs-image.c

index 189e546..52209a7 100644 (file)
@@ -314,11 +314,11 @@ static char *find_collision(struct metadump_struct *md, char *name,
                if (val->sub[i] == 127) {
                        do {
                                i++;
-                               if (i > name_len)
+                               if (i >= name_len)
                                        break;
                        } while (val->sub[i] == 127);
 
-                       if (i > name_len)
+                       if (i >= name_len)
                                break;
                        val->sub[i]++;
                        if (val->sub[i] == '/')