fs - fix name overwrite in __register_chrdev_region
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.
Signed-off-by Cyrill Gorcunov <[email protected]>
---
fs/char_dev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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);
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_showdoes not like it.Signed-off-by Cyrill Gorcunov <[email protected]>---
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);
_
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!