svn commit: r262488 - head/sbin/fsck_ffs
Kirk McKusick
mckusick at FreeBSD.org
Tue Feb 25 18:25:27 UTC 2014
Author: mckusick
Date: Tue Feb 25 18:25:27 2014
New Revision: 262488
URL: http://svnweb.freebsd.org/changeset/base/262488
Log:
Arguments for malloc and calloc should be size_t, not int.
Use proper bounds check when trying to free cached memory.
Spotted by: Xin Li
Tested by: Dmitry Sivachenko
MFC after: 2 weeks
Modified:
head/sbin/fsck_ffs/fsck.h
head/sbin/fsck_ffs/fsutil.c
Modified: head/sbin/fsck_ffs/fsck.h
==============================================================================
--- head/sbin/fsck_ffs/fsck.h Tue Feb 25 18:00:55 2014 (r262487)
+++ head/sbin/fsck_ffs/fsck.h Tue Feb 25 18:25:27 2014 (r262488)
@@ -369,7 +369,7 @@ int flushentry(void);
* to get space.
*/
static inline void*
-Malloc(int size)
+Malloc(size_t size)
{
void *retval;
@@ -384,7 +384,7 @@ Malloc(int size)
* to get space.
*/
static inline void*
-Calloc(int cnt, int size)
+Calloc(size_t cnt, size_t size)
{
void *retval;
Modified: head/sbin/fsck_ffs/fsutil.c
==============================================================================
--- head/sbin/fsck_ffs/fsutil.c Tue Feb 25 18:00:55 2014 (r262487)
+++ head/sbin/fsck_ffs/fsutil.c Tue Feb 25 18:25:27 2014 (r262488)
@@ -225,7 +225,7 @@ cgget(int cg)
struct cg *cgp;
if (cgbufs == NULL) {
- cgbufs = Calloc(sblock.fs_ncg, sizeof(struct bufarea));
+ cgbufs = calloc(sblock.fs_ncg, sizeof(struct bufarea));
if (cgbufs == NULL)
errx(EEXIT, "cannot allocate cylinder group buffers");
}
@@ -254,6 +254,8 @@ flushentry(void)
{
struct bufarea *cgbp;
+ if (flushtries == sblock.fs_ncg || cgbufs == NULL)
+ return (0);
cgbp = &cgbufs[flushtries++];
if (cgbp->b_un.b_cg == NULL)
return (0);
More information about the svn-src-head
mailing list