Skip to contentSkip to conversation

fs - fix name overwrite in __register_chrdev_region

PATCH In review Cyrill Gorcunov 2 participants 3 messages Dec 13, 2008 – Dec 16, 2008 VFS

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fs - fix name overwrite in __register_chrdev_region

It's possible to register chdev with a name size
exactly the same as was allocated in structure.
It seems it was not intedned behaviour.

At least chrdev_show does not like it.

---

 fs/char_dev.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
fs/char_dev.c +1 -1
Index: linux-2.6.git/fs/char_dev.c
===================================================================
@@ -120,7 +120,7 @@ __register_chrdev_region(unsigned int ma
 	cd->major = major;
 	cd->baseminor = baseminor;
 	cd->minorct = minorct;
-	strncpy(cd->name,name, 64);
+	strncpy(cd->name, name, sizeof(cd->name) - 1);
 
 	i = major_to_index(major);
 
#1 lore raw
Quoted 17 lines · On Sun, 14 Dec 2008 00:49:11 +0300 Cyrill Gorcunov <[email protected]> wrote:

It's possible to register chdev with a name size
exactly the same as was allocated in structure.
It seems it was not intedned behaviour.

At least chrdev_show does not like it.

---

 fs/char_dev.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.git/fs/char_dev.c
===================================================================

fs/char_dev.c __register_chrdev_region(unsigned int ma · line 126

Quoted 8 lines
fs/char_dev.c +1 -1
@@ -120,7 +120,7 @@ __register_chrdev_region(unsigned int ma
 	cd->major = major;
 	cd->baseminor = baseminor;
 	cd->minorct = minorct;
-	strncpy(cd->name,name, 64);
+	strncpy(cd->name, name, sizeof(cd->name) - 1);
 
 	i = major_to_index(major);
 

OK.

strlcpy() prodces a more pleasing result:

fs/char_dev.c renamed from fs/char_dev.c~fs-fix-name-overwrite-in-__register_chrdev_region +1 -1
@@ -120,7 +120,7 @@ __register_chrdev_region(unsigned int ma
 	cd->major = major;
 	cd->baseminor = baseminor;
 	cd->minorct = minorct;
-	strncpy(cd->name,name, 64);
+	strlcpy(cd->name, name, sizeof(cd->name));
 
 	i = major_to_index(major);
 

_

#2 lore raw
Quoted 16 lines · Andrew Morton

OK.

strlcpy() prodces a more pleasing result:

fs/char_dev.c renamed from fs/char_dev.c~fs-fix-name-overwrite-in-__register_chrdev_region +1 -1
@@ -120,7 +120,7 @@ __register_chrdev_region(unsigned int ma
       cd->major = major;
       cd->baseminor = baseminor;
       cd->minorct = minorct;
-       strncpy(cd->name,name, 64);
+       strlcpy(cd->name, name, sizeof(cd->name));
 
       i = major_to_index(major);
 
Quoted 2 lines

_

Thanks, Andrew!