* [PATCH] initramfs: fix CPIO hardlink check
@ 2006-05-04 18:43 Mark Huang
0 siblings, 0 replies; only message in thread
From: Mark Huang @ 2006-05-04 18:43 UTC (permalink / raw)
To: linux-kernel
Copy the filenames of hardlinks when inserting them into the hash, since
the "name" pointer may point to scratch space (name_buf). Not doing so
results in corruption if the scratch space is later overwritten: the
wrong file may be hardlinked, or, if the scratch space contains garbage,
the link will fail and a 0-byte file will be created instead.
Cc: me on responses.
Signed-off-by: Mark Huang <mlhuang@cs.princeton.edu>
--- linux-2.6.16.13/init/initramfs.c 2006-05-02 17:38:44.000000000 -0400
+++ linux-2.6.16.13.initramfs/init/initramfs.c 2006-05-04
14:26:44.000000000 -0400
@@ -26,10 +26,12 @@ static void __init free(void *where)
/* link hash */
+#define N_ALIGN(len) ((((len) + 1) & ~3) + 2)
+
static __initdata struct hash {
int ino, minor, major;
struct hash *next;
- char *name;
+ char name[N_ALIGN(PATH_MAX)];
} *head[32];
static inline int hash(int major, int minor, int ino)
@@ -57,7 +59,7 @@ static char __init *find_link(int major,
q->ino = ino;
q->minor = minor;
q->major = major;
- q->name = name;
+ strcpy(q->name, name);
q->next = NULL;
*p = q;
return NULL;
@@ -133,8 +135,6 @@ static inline void eat(unsigned n)
count -= n;
}
-#define N_ALIGN(len) ((((len) + 1) & ~3) + 2)
-
static __initdata char *collected;
static __initdata int remains;
static __initdata char *collect;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-05-04 18:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-04 18:43 [PATCH] initramfs: fix CPIO hardlink check Mark Huang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.