diff options
author | aiju <devnull@localhost> | 2017-06-21 09:59:32 +0000 |
---|---|---|
committer | aiju <devnull@localhost> | 2017-06-21 09:59:32 +0000 |
commit | 37b9ab5a043e45a68979632c177e11af7a439027 (patch) | |
tree | 996501d5cc3d7c97655ce9799ebbd188a1d9e4aa /sys/src/9/pc/devvmx.c | |
parent | 779f6cb3b8a304677c293e5deff3305336681997 (diff) |
devvmx: error handling in clearmeminfo
Diffstat (limited to 'sys/src/9/pc/devvmx.c')
-rw-r--r-- | sys/src/9/pc/devvmx.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/src/9/pc/devvmx.c b/sys/src/9/pc/devvmx.c index b1df66666..6b86f861f 100644 --- a/sys/src/9/pc/devvmx.c +++ b/sys/src/9/pc/devvmx.c @@ -703,9 +703,14 @@ cmdsetmeminfo(VmCmd *, va_list va) q = strchr(p, '\n'); if(q == 0) break; *q = 0; - if(mp == nil) + if(mp == nil){ mp = malloc(sizeof(VmMem)); + if(mp == nil) + error(Enomem); + } + memset(mp, 0, sizeof(VmMem)); if(waserror()){ + putseg(mp->seg); free(mp->name); free(mp); nexterror(); @@ -714,7 +719,6 @@ cmdsetmeminfo(VmCmd *, va_list va) p = q + 1; if(rc == 0) goto next; if(rc != 4 && rc != 6) error("number of fields wrong"); - memset(mp, 0, sizeof(VmMem)); for(q = f[0]; *q != 0; q++) switch(*q){ case 'r': if((mp->attr & 1) != 0) goto tinval; mp->attr |= 1; break; |