Static analysis fixes
Change-Id: I7bc42545a1c497f704d7bfa6ea1b7e3893acc697
This commit is contained in:
committed by
Dominique Martinet
parent
141fa5120e
commit
9a79920ef9
@@ -2081,7 +2081,7 @@ int do_process_vm_read_writev(int pid,
|
|||||||
|
|
||||||
range = lookup_process_memory_range(lthread->vm,
|
range = lookup_process_memory_range(lthread->vm,
|
||||||
(uintptr_t)local_iov,
|
(uintptr_t)local_iov,
|
||||||
(uintptr_t)(local_iov + liovcnt * sizeof(struct iovec)));
|
(uintptr_t)(local_iov + liovcnt));
|
||||||
|
|
||||||
if (!range) {
|
if (!range) {
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
@@ -2090,7 +2090,7 @@ int do_process_vm_read_writev(int pid,
|
|||||||
|
|
||||||
range = lookup_process_memory_range(lthread->vm,
|
range = lookup_process_memory_range(lthread->vm,
|
||||||
(uintptr_t)remote_iov,
|
(uintptr_t)remote_iov,
|
||||||
(uintptr_t)(remote_iov + riovcnt * sizeof(struct iovec)));
|
(uintptr_t)(remote_iov + riovcnt));
|
||||||
|
|
||||||
if (!range) {
|
if (!range) {
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ int print_kregs(char *rbp, size_t rbp_size, const struct arch_kregs *kregs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < sizeof(regs_1)/sizeof(regs_1[0]); i++) { /* rsi, rdi, rbp, rsp */
|
for (i = 0; i < sizeof(regs_1)/sizeof(regs_1[0]); i++) { /* rsi, rdi, rbp, rsp */
|
||||||
ret = print_bin(rbp, rbp_size, (void *)regs_1[i], sizeof(regs_1[0]));
|
ret = print_bin(rbp, rbp_size, regs_1 + i, sizeof(regs_1[0]));
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -62,7 +62,7 @@ int print_kregs(char *rbp, size_t rbp_size, const struct arch_kregs *kregs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < sizeof(regs_2)/sizeof(regs_2[0]); i++) { /* r12-r15 */
|
for (i = 0; i < sizeof(regs_2)/sizeof(regs_2[0]); i++) { /* r12-r15 */
|
||||||
ret = print_bin(rbp, rbp_size, (void *)regs_2[i], sizeof(regs_2[0]));
|
ret = print_bin(rbp, rbp_size, regs_2 + i, sizeof(regs_2[0]));
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -441,10 +441,12 @@ struct program_load_desc *load_interp(struct program_load_desc *desc0, FILE *fp)
|
|||||||
for (i = 0; i < hdr.e_phnum; i++) {
|
for (i = 0; i < hdr.e_phnum; i++) {
|
||||||
if (fread(&phdr, sizeof(phdr), 1, fp) < 1) {
|
if (fread(&phdr, sizeof(phdr), 1, fp) < 1) {
|
||||||
__eprintf("Loading phdr failed (%d)\n", i);
|
__eprintf("Loading phdr failed (%d)\n", i);
|
||||||
|
free(desc);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (phdr.p_type == PT_INTERP) {
|
if (phdr.p_type == PT_INTERP) {
|
||||||
__eprint("PT_INTERP on interp\n");
|
__eprint("PT_INTERP on interp\n");
|
||||||
|
free(desc);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (phdr.p_type == PT_LOAD) {
|
if (phdr.p_type == PT_LOAD) {
|
||||||
@@ -505,11 +507,13 @@ retry:
|
|||||||
|
|
||||||
if (!execvp) {
|
if (!execvp) {
|
||||||
if (strlen(filename) + 1 > max_len) {
|
if (strlen(filename) + 1 > max_len) {
|
||||||
|
free(link_path);
|
||||||
return ENAMETOOLONG;
|
return ENAMETOOLONG;
|
||||||
}
|
}
|
||||||
strcpy(path, filename);
|
strcpy(path, filename);
|
||||||
error = access(path, X_OK);
|
error = access(path, X_OK);
|
||||||
if (error) {
|
if (error) {
|
||||||
|
free(link_path);
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
found = 1;
|
found = 1;
|
||||||
@@ -521,6 +525,7 @@ retry:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strlen(filename) >= 255) {
|
if (strlen(filename) >= 255) {
|
||||||
|
free(link_path);
|
||||||
return ENAMETOOLONG;
|
return ENAMETOOLONG;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -530,6 +535,7 @@ retry:
|
|||||||
tofree = string = strdup(PATH);
|
tofree = string = strdup(PATH);
|
||||||
if (string == NULL) {
|
if (string == NULL) {
|
||||||
printf("lookup_exec_path(): copying PATH, not enough memory?\n");
|
printf("lookup_exec_path(): copying PATH, not enough memory?\n");
|
||||||
|
free(link_path);
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -550,7 +556,8 @@ retry:
|
|||||||
}
|
}
|
||||||
|
|
||||||
free(tofree);
|
free(tofree);
|
||||||
if(!found){
|
if (!found) {
|
||||||
|
free(link_path);
|
||||||
return ENOENT;
|
return ENOENT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -562,6 +569,7 @@ retry:
|
|||||||
|
|
||||||
if (error < 0 || error >= max_len) {
|
if (error < 0 || error >= max_len) {
|
||||||
fprintf(stderr, "lookup_exec_path(): array too small?\n");
|
fprintf(stderr, "lookup_exec_path(): array too small?\n");
|
||||||
|
free(link_path);
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,6 +589,7 @@ retry:
|
|||||||
|
|
||||||
if (error < 0 || error >= max_len) {
|
if (error < 0 || error >= max_len) {
|
||||||
fprintf(stderr, "lookup_exec_path(): array too small?\n");
|
fprintf(stderr, "lookup_exec_path(): array too small?\n");
|
||||||
|
free(link_path);
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -611,6 +620,7 @@ retry:
|
|||||||
error = readlink(path, link_path, max_len);
|
error = readlink(path, link_path, max_len);
|
||||||
if (error == -1 || error == max_len) {
|
if (error == -1 || error == max_len) {
|
||||||
fprintf(stderr, "lookup_exec_path(): error readlink\n");
|
fprintf(stderr, "lookup_exec_path(): error readlink\n");
|
||||||
|
free(link_path);
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
}
|
}
|
||||||
link_path[error] = '\0';
|
link_path[error] = '\0';
|
||||||
@@ -628,7 +638,7 @@ retry:
|
|||||||
filename = link_path;
|
filename = link_path;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"lookup_exec_path(): error finding file %s\n", filename);
|
"lookup_exec_path(): error finding file %s\n", filename);
|
||||||
@@ -677,6 +687,7 @@ int load_elf_desc(char *filename, struct program_load_desc **desc_p,
|
|||||||
|
|
||||||
if (fread(&header, 1, 2, fp) != 2) {
|
if (fread(&header, 1, 2, fp) != 2) {
|
||||||
fprintf(stderr, "Error: Failed to read header from %s\n", filename);
|
fprintf(stderr, "Error: Failed to read header from %s\n", filename);
|
||||||
|
fclose(fp);
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -699,6 +710,7 @@ int load_elf_desc(char *filename, struct program_load_desc **desc_p,
|
|||||||
if ((ret = ioctl(fd, MCEXEC_UP_OPEN_EXEC, filename)) != 0) {
|
if ((ret = ioctl(fd, MCEXEC_UP_OPEN_EXEC, filename)) != 0) {
|
||||||
fprintf(stderr, "Error: open_exec() fails for %s: %d (fd: %d)\n",
|
fprintf(stderr, "Error: open_exec() fails for %s: %d (fd: %d)\n",
|
||||||
filename, ret, fd);
|
filename, ret, fd);
|
||||||
|
fclose(fp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -713,6 +725,7 @@ int load_elf_desc(char *filename, struct program_load_desc **desc_p,
|
|||||||
|
|
||||||
if (!exec_path) {
|
if (!exec_path) {
|
||||||
fprintf(stderr, "WARNING: strdup(filename) failed\n");
|
fprintf(stderr, "WARNING: strdup(filename) failed\n");
|
||||||
|
fclose(fp);
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -720,12 +733,14 @@ int load_elf_desc(char *filename, struct program_load_desc **desc_p,
|
|||||||
char *cwd = getcwd(NULL, 0);
|
char *cwd = getcwd(NULL, 0);
|
||||||
if (!cwd) {
|
if (!cwd) {
|
||||||
fprintf(stderr, "Error: getting current working dir pathname\n");
|
fprintf(stderr, "Error: getting current working dir pathname\n");
|
||||||
|
fclose(fp);
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
exec_path = malloc(strlen(cwd) + strlen(filename) + 2);
|
exec_path = malloc(strlen(cwd) + strlen(filename) + 2);
|
||||||
if (!exec_path) {
|
if (!exec_path) {
|
||||||
fprintf(stderr, "Error: allocating exec_path\n");
|
fprintf(stderr, "Error: allocating exec_path\n");
|
||||||
|
fclose(fp);
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -735,8 +750,8 @@ int load_elf_desc(char *filename, struct program_load_desc **desc_p,
|
|||||||
|
|
||||||
desc = load_elf(fp, &interp_path);
|
desc = load_elf(fp, &interp_path);
|
||||||
if (!desc) {
|
if (!desc) {
|
||||||
fclose(fp);
|
|
||||||
fprintf(stderr, "Error: Failed to parse ELF!\n");
|
fprintf(stderr, "Error: Failed to parse ELF!\n");
|
||||||
|
fclose(fp);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -746,18 +761,22 @@ int load_elf_desc(char *filename, struct program_load_desc **desc_p,
|
|||||||
path = search_file(interp_path, X_OK);
|
path = search_file(interp_path, X_OK);
|
||||||
if (!path) {
|
if (!path) {
|
||||||
fprintf(stderr, "Error: interp not found: %s\n", interp_path);
|
fprintf(stderr, "Error: interp not found: %s\n", interp_path);
|
||||||
|
fclose(fp);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
interp = fopen(path, "rb");
|
interp = fopen(path, "rb");
|
||||||
if (!interp) {
|
if (!interp) {
|
||||||
fprintf(stderr, "Error: Failed to open %s\n", path);
|
fprintf(stderr, "Error: Failed to open %s\n", path);
|
||||||
|
fclose(fp);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
desc = load_interp(desc, interp);
|
desc = load_interp(desc, interp);
|
||||||
if (!desc) {
|
if (!desc) {
|
||||||
fprintf(stderr, "Error: Failed to parse interp!\n");
|
fprintf(stderr, "Error: Failed to parse interp!\n");
|
||||||
|
fclose(fp);
|
||||||
|
fclose(interp);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1775,11 +1794,7 @@ void bind_mount_recursive(const char *root, char *prefix)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(entry = readdir(dir))) {
|
while ((entry = readdir(dir))) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
|
||||||
len = snprintf(path, sizeof(path) - 1,
|
len = snprintf(path, sizeof(path) - 1,
|
||||||
"%s/%s", prefix, entry->d_name);
|
"%s/%s", prefix, entry->d_name);
|
||||||
path[len] = 0;
|
path[len] = 0;
|
||||||
@@ -1813,7 +1828,6 @@ void bind_mount_recursive(const char *root, char *prefix)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while ((entry = readdir(dir)) != NULL);
|
|
||||||
|
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
}
|
}
|
||||||
@@ -2712,7 +2726,8 @@ do_generic_syscall(
|
|||||||
sprintf(proc_path, "/proc/self/fd/%d", (int)w->sr.args[0]);
|
sprintf(proc_path, "/proc/self/fd/%d", (int)w->sr.args[0]);
|
||||||
|
|
||||||
/* Get filename */
|
/* Get filename */
|
||||||
if ((len = readlink(proc_path, path, sizeof(path))) < 0) {
|
len = readlink(proc_path, path, sizeof(path));
|
||||||
|
if (len < 0 || len >= sizeof(path)) {
|
||||||
fprintf(stderr, "%s: error: readlink() failed for %s\n",
|
fprintf(stderr, "%s: error: readlink() failed for %s\n",
|
||||||
__FUNCTION__, proc_path);
|
__FUNCTION__, proc_path);
|
||||||
goto out;
|
goto out;
|
||||||
@@ -3387,6 +3402,8 @@ int main_loop(struct thread_data_s *my_thread)
|
|||||||
ret = open(fn, w.sr.args[2], w.sr.args[3]);
|
ret = open(fn, w.sr.args[2], w.sr.args[3]);
|
||||||
SET_ERR(ret);
|
SET_ERR(ret);
|
||||||
do_syscall_return(fd, cpu, ret, 0, 0, 0, 0);
|
do_syscall_return(fd, cpu, ret, 0, 0, 0, 0);
|
||||||
|
if (ret >= 0)
|
||||||
|
close(ret);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case __NR_futex:
|
case __NR_futex:
|
||||||
|
|||||||
@@ -656,7 +656,9 @@ static int fileobj_get_page(struct memobj *memobj, off_t off,
|
|||||||
npages = 1 << p2align;
|
npages = 1 << p2align;
|
||||||
|
|
||||||
virt = ihk_mc_alloc_pages_user(npages, (IHK_MC_AP_NOWAIT |
|
virt = ihk_mc_alloc_pages_user(npages, (IHK_MC_AP_NOWAIT |
|
||||||
(to_memobj(obj)->flags & MF_ZEROFILL) ? IHK_MC_AP_USER : 0), virt_addr);
|
((to_memobj(obj)->flags & MF_ZEROFILL) ?
|
||||||
|
IHK_MC_AP_USER : 0)),
|
||||||
|
virt_addr);
|
||||||
if (!virt) {
|
if (!virt) {
|
||||||
error = -ENOMEM;
|
error = -ENOMEM;
|
||||||
kprintf("fileobj_get_page(%p,%lx,%x,%x,%p):"
|
kprintf("fileobj_get_page(%p,%lx,%x,%x,%p):"
|
||||||
|
|||||||
@@ -8018,9 +8018,8 @@ SYSCALL_DECLARE(msync)
|
|||||||
|
|
||||||
if ((range->flag & VR_PRIVATE) || !range->memobj
|
if ((range->flag & VR_PRIVATE) || !range->memobj
|
||||||
|| !memobj_has_pager(range->memobj)) {
|
|| !memobj_has_pager(range->memobj)) {
|
||||||
dkprintf("sys_msync(%#lx,%#lx,%#x):"
|
dkprintf("sys_msync(%#lx,%#lx,%#x):unsyncable VMR %#lx-%#lx %#lx\n",
|
||||||
"unsyncable VMR %d %#lx-%#lx %#lx\n",
|
start0, len0, flags,
|
||||||
start0, len0, flags, error,
|
|
||||||
range->start, range->end, range->flag);
|
range->start, range->end, range->flag);
|
||||||
/* nothing to do */
|
/* nothing to do */
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user