PPC: in celleb_show_cpuinfo() convert strncpy(x, y, sizeof(x)) to strlcpy
PATCH 1/1 PPC: in celleb_show_cpuinfo() convert strncpy(x, y, sizeof(x)) to strlcpy
This patch was not yet tested. Please confirm it's right.
---
strncpy does not append '\0' if the length of the source string equals the size parameter, strlcpy does.
---
arch/powerpc/platforms/celleb/setup.c +1 -1
@@ -81,7 +81,7 @@ static void celleb_show_cpuinfo(struct seq_file *m)static int __init celleb_machine_type_hack (char *ptr) { -strncpy (celleb_machine_type, ptr,sizeof (celleb_machine_type)); +strlcpy (celleb_machine_type, ptr,sizeof (celleb_machine_type)); celleb_machine_type[sizeof (celleb_machine_type)-1 ] =0 ;return 0 ; }
Quoted 1 line · Roel Kluin
This patch was not yet tested. Please confirm it's right.
was too quick with the send button. the batch below is probably better
---
strncpy does not append '\0' if the length of the source string equals the size parameter, strlcpy does.
---
arch/powerpc/platforms/celleb/setup.c +1 -2
@@ -81,8 +81,7 @@ static void celleb_show_cpuinfo(struct seq_file *m)static int __init celleb_machine_type_hack (char *ptr) { -strncpy (celleb_machine_type, ptr,sizeof (celleb_machine_type)); - celleb_machine_type[sizeof (celleb_machine_type)-1 ] =0 ; +strlcpy (celleb_machine_type, ptr,sizeof (celleb_machine_type));return 0 ; }
Quoted 4 lines
This patch was not yet tested. Please confirm it's right.
---
strncpy does not append '\0' if the length of the source string equals the size parameter, strlcpy does.
strlcpy() doesn't fill the rest of the array with zeroes, strncpy() does. This could matter (information leak, for example), although I doubt it does here.
arch/powerpc/platforms/celleb/setup.c static void celleb_show_cpuinfo(struct seq_file *m) · line 85
Quoted 3 lines
arch/powerpc/platforms/celleb/setup.c +1
-1-strncpy (celleb_machine_type, ptr,sizeof (celleb_machine_type)); +strlcpy (celleb_machine_type, ptr,sizeof (celleb_machine_type)); celleb_machine_type[sizeof (celleb_machine_type)-1 ] =0 ;
That last statement makes the strncpy() case always zero-terminated, so this patch isn't necessary. Oh, and neither the old nor the new code handles the case where the string doesn't fit (other than just cutting it short); is that the wanted behaviour?
Segher
Ishizaki Kou
Acked-byQuoted 9 lines · Roel Kluin
Quoted 1 line · Roel Kluin
This patch was not yet tested. Please confirm it's right.
was too quick with the send button. the batch below is probably better
---
strncpy does not append '\0' if the length of the source string equals the size parameter, strlcpy does.Signed-off-by Roel Kluin <[email protected]>
I tested Roel's 2nd patch and it works good on Celleb.
Quoted 19 lines
---
arch/powerpc/platforms/celleb/setup.c +1
-2@@ -81,8 +81,7 @@ static void celleb_show_cpuinfo(struct seq_file *m)static int __init celleb_machine_type_hack (char *ptr) { -strncpy (celleb_machine_type, ptr,sizeof (celleb_machine_type)); - celleb_machine_type[sizeof (celleb_machine_type)-1 ] =0 ; +strlcpy (celleb_machine_type, ptr,sizeof (celleb_machine_type));return 0 ; }_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-dev