Re: [PATCH 9] installboot: malloc/memset = calloc

2014-06-09 Thread Joel Sing
Commited. Thanks.

On Sun, 1 Jun 2014, Benjamin Baier wrote:
 On Sun, 1 Jun 2014 00:57:43 +1000

 Joel Sing j...@sing.id.au wrote:
  In this case I think readability wins. I do not believe that there is a
  lot to gain from overflow protection given the numbers used in these
  calculations are very small (and many are already bounds checked in some
  form or other).

 Well, I had to ask. Here is option 2.

 Index: bootstrap.c
 ===
 RCS file: /cvs/src/usr.sbin/installboot/bootstrap.c,v
 retrieving revision 1.3
 diff -u -p -r1.3 bootstrap.c
 --- bootstrap.c   28 Dec 2013 12:01:33 -  1.3
 +++ bootstrap.c   31 May 2014 18:14:56 -
 @@ -68,10 +68,9 @@ bootstrap(int devfd, char *dev, char *bo
   fprintf(stderr, bootstrap is %zu bytes 
   (%zu sectors @ %u bytes = %zu bytes)\n,
   (ssize_t)sb.st_size, bootsec, dl.d_secsize, bootsize);
 - boot = malloc(bootsize);
 + boot = calloc(1, bootsize);
   if (boot == NULL)
 - err(1, malloc);
 - memset(boot, 0, bootsize);
 + err(1, calloc);
   if (read(fd, boot, bootsize) != (ssize_t)sb.st_size)
   err(1, read);
   close(fd);
 Index: i386_softraid.c
 ===
 RCS file: /cvs/src/usr.sbin/installboot/i386_softraid.c,v
 retrieving revision 1.1
 diff -u -p -r1.1 i386_softraid.c
 --- i386_softraid.c   19 Jan 2014 02:58:50 -  1.1
 +++ i386_softraid.c   31 May 2014 18:14:56 -
 @@ -129,11 +129,10 @@ sr_install_bootldr(int devfd, char *dev)
   inodeblk = nblocks - 1;
   bootsize = nblocks * SR_FS_BLOCKSIZE;

 - p = malloc(bootsize);
 + p = calloc(1, bootsize);
   if (p == NULL)
   err(1, NULL);

 - memset(p, 0, bootsize);
   fd = open(stage2, O_RDONLY, 0);
   if (fd == -1)
   err(1, NULL);
 Index: sparc64_installboot.c
 ===
 RCS file: /cvs/src/usr.sbin/installboot/sparc64_installboot.c,v
 retrieving revision 1.1
 diff -u -p -r1.1 sparc64_installboot.c
 --- sparc64_installboot.c 19 Jan 2014 02:58:50 -  1.1
 +++ sparc64_installboot.c 31 May 2014 18:14:56 -
 @@ -68,10 +68,9 @@ md_loadboot(void)
   if (blksize  SBSIZE - DEV_BSIZE)
   errx(1, boot blocks too big (%zu  %d),
   blksize, SBSIZE - DEV_BSIZE);
 - blkstore = malloc(blksize);
 + blkstore = calloc(1, blksize);
   if (blkstore == NULL)
 - err(1, malloc);
 - memset(blkstore, 0, blksize);
 + err(1, calloc);
   if (read(fd, blkstore, sb.st_size) != (ssize_t)sb.st_size)
   err(1, read);
   close(fd);



-- 

Action without study is fatal. Study without action is futile.
-- Mary Ritter Beard



Re: [PATCH 9] installboot: malloc/memset = calloc

2014-06-06 Thread Benjamin Baier
bump.
anybody?

On Sat, 31 May 2014 20:29:42 +0200
Benjamin Baier program...@netzbasis.de wrote:
 On Sun, 1 Jun 2014 00:57:43 +1000
 Joel Sing j...@sing.id.au wrote:
  In this case I think readability wins. I do not believe that there is a lot 
  to 
  gain from overflow protection given the numbers used in these calculations 
  are very small (and many are already bounds checked in some form or other).
 
 Well, I had to ask. Here is option 2.
Index: bootstrap.c
===
RCS file: /cvs/src/usr.sbin/installboot/bootstrap.c,v
retrieving revision 1.3
diff -u -p -r1.3 bootstrap.c
--- bootstrap.c 28 Dec 2013 12:01:33 -  1.3
+++ bootstrap.c 31 May 2014 18:14:56 -
@@ -68,10 +68,9 @@ bootstrap(int devfd, char *dev, char *bo
fprintf(stderr, bootstrap is %zu bytes 
(%zu sectors @ %u bytes = %zu bytes)\n,
(ssize_t)sb.st_size, bootsec, dl.d_secsize, bootsize);
-   boot = malloc(bootsize);
+   boot = calloc(1, bootsize);
if (boot == NULL)
-   err(1, malloc);
-   memset(boot, 0, bootsize);
+   err(1, calloc);
if (read(fd, boot, bootsize) != (ssize_t)sb.st_size)
err(1, read);
close(fd);
Index: i386_softraid.c
===
RCS file: /cvs/src/usr.sbin/installboot/i386_softraid.c,v
retrieving revision 1.1
diff -u -p -r1.1 i386_softraid.c
--- i386_softraid.c 19 Jan 2014 02:58:50 -  1.1
+++ i386_softraid.c 31 May 2014 18:14:56 -
@@ -129,11 +129,10 @@ sr_install_bootldr(int devfd, char *dev)
inodeblk = nblocks - 1;
bootsize = nblocks * SR_FS_BLOCKSIZE;
 
-   p = malloc(bootsize);
+   p = calloc(1, bootsize);
if (p == NULL)
err(1, NULL);

-   memset(p, 0, bootsize);
fd = open(stage2, O_RDONLY, 0);
if (fd == -1)
err(1, NULL);
Index: sparc64_installboot.c
===
RCS file: /cvs/src/usr.sbin/installboot/sparc64_installboot.c,v
retrieving revision 1.1
diff -u -p -r1.1 sparc64_installboot.c
--- sparc64_installboot.c   19 Jan 2014 02:58:50 -  1.1
+++ sparc64_installboot.c   31 May 2014 18:14:56 -
@@ -68,10 +68,9 @@ md_loadboot(void)
if (blksize  SBSIZE - DEV_BSIZE)
errx(1, boot blocks too big (%zu  %d),
blksize, SBSIZE - DEV_BSIZE);
-   blkstore = malloc(blksize);
+   blkstore = calloc(1, blksize);
if (blkstore == NULL)
-   err(1, malloc);
-   memset(blkstore, 0, blksize);
+   err(1, calloc);
if (read(fd, blkstore, sb.st_size) != (ssize_t)sb.st_size)
err(1, read);
close(fd);



[PATCH 9] installboot: malloc/memset = calloc

2014-05-31 Thread Benjamin Baier
This one splits up the malloc parameter, taking full potential from calloc, 
hurting readability a bit.
which one is preferred? more readable/maintainable or using the calloc overflow 
protection?

Index: bootstrap.c
===
RCS file: /cvs/src/usr.sbin/installboot/bootstrap.c,v
retrieving revision 1.3
diff -u -p -r1.3 bootstrap.c
--- bootstrap.c 28 Dec 2013 12:01:33 -  1.3
+++ bootstrap.c 31 May 2014 10:26:27 -
@@ -68,10 +68,9 @@ bootstrap(int devfd, char *dev, char *bo
fprintf(stderr, bootstrap is %zu bytes 
(%zu sectors @ %u bytes = %zu bytes)\n,
(ssize_t)sb.st_size, bootsec, dl.d_secsize, bootsize);
-   boot = malloc(bootsize);
+   boot = calloc(bootsec, dl.d_secsize);
if (boot == NULL)
-   err(1, malloc);
-   memset(boot, 0, bootsize);
+   err(1, calloc);
if (read(fd, boot, bootsize) != (ssize_t)sb.st_size)
err(1, read);
close(fd);
Index: i386_softraid.c
===
RCS file: /cvs/src/usr.sbin/installboot/i386_softraid.c,v
retrieving revision 1.1
diff -u -p -r1.1 i386_softraid.c
--- i386_softraid.c 19 Jan 2014 02:58:50 -  1.1
+++ i386_softraid.c 31 May 2014 10:26:27 -
@@ -129,11 +129,10 @@ sr_install_bootldr(int devfd, char *dev)
inodeblk = nblocks - 1;
bootsize = nblocks * SR_FS_BLOCKSIZE;
 
-   p = malloc(bootsize);
+   p = calloc(nblocks, SR_FS_BLOCKSIZE);
if (p == NULL)
err(1, NULL);

-   memset(p, 0, bootsize);
fd = open(stage2, O_RDONLY, 0);
if (fd == -1)
err(1, NULL);
Index: sparc64_installboot.c
===
RCS file: /cvs/src/usr.sbin/installboot/sparc64_installboot.c,v
retrieving revision 1.1
diff -u -p -r1.1 sparc64_installboot.c
--- sparc64_installboot.c   19 Jan 2014 02:58:50 -  1.1
+++ sparc64_installboot.c   31 May 2014 10:26:27 -
@@ -68,10 +68,9 @@ md_loadboot(void)
if (blksize  SBSIZE - DEV_BSIZE)
errx(1, boot blocks too big (%zu  %d),
blksize, SBSIZE - DEV_BSIZE);
-   blkstore = malloc(blksize);
+   blkstore = calloc(blocks, DEV_BSIZE);
if (blkstore == NULL)
-   err(1, malloc);
-   memset(blkstore, 0, blksize);
+   err(1, calloc);
if (read(fd, blkstore, sb.st_size) != (ssize_t)sb.st_size)
err(1, read);
close(fd);



Re: [PATCH 9] installboot: malloc/memset = calloc

2014-05-31 Thread Joel Sing
On Sat, 31 May 2014, Benjamin Baier wrote:
 This one splits up the malloc parameter, taking full potential from calloc,
 hurting readability a bit. which one is preferred? more
 readable/maintainable or using the calloc overflow protection?

In this case I think readability wins. I do not believe that there is a lot to 
gain from overflow protection given the numbers used in these calculations 
are very small (and many are already bounds checked in some form or other).

 Index: bootstrap.c
 ===
 RCS file: /cvs/src/usr.sbin/installboot/bootstrap.c,v
 retrieving revision 1.3
 diff -u -p -r1.3 bootstrap.c
 --- bootstrap.c   28 Dec 2013 12:01:33 -  1.3
 +++ bootstrap.c   31 May 2014 10:26:27 -
 @@ -68,10 +68,9 @@ bootstrap(int devfd, char *dev, char *bo
   fprintf(stderr, bootstrap is %zu bytes 
   (%zu sectors @ %u bytes = %zu bytes)\n,
   (ssize_t)sb.st_size, bootsec, dl.d_secsize, bootsize);
 - boot = malloc(bootsize);
 + boot = calloc(bootsec, dl.d_secsize);
   if (boot == NULL)
 - err(1, malloc);
 - memset(boot, 0, bootsize);
 + err(1, calloc);
   if (read(fd, boot, bootsize) != (ssize_t)sb.st_size)
   err(1, read);
   close(fd);
 Index: i386_softraid.c
 ===
 RCS file: /cvs/src/usr.sbin/installboot/i386_softraid.c,v
 retrieving revision 1.1
 diff -u -p -r1.1 i386_softraid.c
 --- i386_softraid.c   19 Jan 2014 02:58:50 -  1.1
 +++ i386_softraid.c   31 May 2014 10:26:27 -
 @@ -129,11 +129,10 @@ sr_install_bootldr(int devfd, char *dev)
   inodeblk = nblocks - 1;
   bootsize = nblocks * SR_FS_BLOCKSIZE;

 - p = malloc(bootsize);
 + p = calloc(nblocks, SR_FS_BLOCKSIZE);
   if (p == NULL)
   err(1, NULL);

 - memset(p, 0, bootsize);
   fd = open(stage2, O_RDONLY, 0);
   if (fd == -1)
   err(1, NULL);
 Index: sparc64_installboot.c
 ===
 RCS file: /cvs/src/usr.sbin/installboot/sparc64_installboot.c,v
 retrieving revision 1.1
 diff -u -p -r1.1 sparc64_installboot.c
 --- sparc64_installboot.c 19 Jan 2014 02:58:50 -  1.1
 +++ sparc64_installboot.c 31 May 2014 10:26:27 -
 @@ -68,10 +68,9 @@ md_loadboot(void)
   if (blksize  SBSIZE - DEV_BSIZE)
   errx(1, boot blocks too big (%zu  %d),
   blksize, SBSIZE - DEV_BSIZE);
 - blkstore = malloc(blksize);
 + blkstore = calloc(blocks, DEV_BSIZE);
   if (blkstore == NULL)
 - err(1, malloc);
 - memset(blkstore, 0, blksize);
 + err(1, calloc);
   if (read(fd, blkstore, sb.st_size) != (ssize_t)sb.st_size)
   err(1, read);
   close(fd);

-- 

Action without study is fatal. Study without action is futile.
-- Mary Ritter Beard



Re: [PATCH 9] installboot: malloc/memset = calloc

2014-05-31 Thread Benjamin Baier
On Sun, 1 Jun 2014 00:57:43 +1000
Joel Sing j...@sing.id.au wrote:
 In this case I think readability wins. I do not believe that there is a lot 
 to 
 gain from overflow protection given the numbers used in these calculations 
 are very small (and many are already bounds checked in some form or other).

Well, I had to ask. Here is option 2.

Index: bootstrap.c
===
RCS file: /cvs/src/usr.sbin/installboot/bootstrap.c,v
retrieving revision 1.3
diff -u -p -r1.3 bootstrap.c
--- bootstrap.c 28 Dec 2013 12:01:33 -  1.3
+++ bootstrap.c 31 May 2014 18:14:56 -
@@ -68,10 +68,9 @@ bootstrap(int devfd, char *dev, char *bo
fprintf(stderr, bootstrap is %zu bytes 
(%zu sectors @ %u bytes = %zu bytes)\n,
(ssize_t)sb.st_size, bootsec, dl.d_secsize, bootsize);
-   boot = malloc(bootsize);
+   boot = calloc(1, bootsize);
if (boot == NULL)
-   err(1, malloc);
-   memset(boot, 0, bootsize);
+   err(1, calloc);
if (read(fd, boot, bootsize) != (ssize_t)sb.st_size)
err(1, read);
close(fd);
Index: i386_softraid.c
===
RCS file: /cvs/src/usr.sbin/installboot/i386_softraid.c,v
retrieving revision 1.1
diff -u -p -r1.1 i386_softraid.c
--- i386_softraid.c 19 Jan 2014 02:58:50 -  1.1
+++ i386_softraid.c 31 May 2014 18:14:56 -
@@ -129,11 +129,10 @@ sr_install_bootldr(int devfd, char *dev)
inodeblk = nblocks - 1;
bootsize = nblocks * SR_FS_BLOCKSIZE;
 
-   p = malloc(bootsize);
+   p = calloc(1, bootsize);
if (p == NULL)
err(1, NULL);

-   memset(p, 0, bootsize);
fd = open(stage2, O_RDONLY, 0);
if (fd == -1)
err(1, NULL);
Index: sparc64_installboot.c
===
RCS file: /cvs/src/usr.sbin/installboot/sparc64_installboot.c,v
retrieving revision 1.1
diff -u -p -r1.1 sparc64_installboot.c
--- sparc64_installboot.c   19 Jan 2014 02:58:50 -  1.1
+++ sparc64_installboot.c   31 May 2014 18:14:56 -
@@ -68,10 +68,9 @@ md_loadboot(void)
if (blksize  SBSIZE - DEV_BSIZE)
errx(1, boot blocks too big (%zu  %d),
blksize, SBSIZE - DEV_BSIZE);
-   blkstore = malloc(blksize);
+   blkstore = calloc(1, blksize);
if (blkstore == NULL)
-   err(1, malloc);
-   memset(blkstore, 0, blksize);
+   err(1, calloc);
if (read(fd, blkstore, sb.st_size) != (ssize_t)sb.st_size)
err(1, read);
close(fd);