goto out;
}
- if (path_discovery(pathvec, conf, DI_SYSFS | DI_CHECKER))
+ if (path_discovery(pathvec, conf, DI_SYSFS | DI_CHECKER)) {
+ ret = MPATH_PR_DMMP_ERROR;
goto out1;
+ }
/* get info of all paths from the dm device */
if (get_mpvec (curmp, pathvec, alias)){
goto out;
}
- if (path_discovery(pathvec, conf, DI_SYSFS | DI_CHECKER))
+ if (path_discovery(pathvec, conf, DI_SYSFS | DI_CHECKER)) {
+ ret = MPATH_PR_DMMP_ERROR;
goto out1;
+ }
/* get info of all paths from the dm device */
if (get_mpvec(curmp, pathvec, alias)){
int rc;
int count=0;
int status = MPATH_PR_SUCCESS;
- uint64_t sa_key;
+ uint64_t sa_key = 0;
if (!mpp)
return MPATH_PR_DMMP_ERROR;
else
mx_resp_len = get_prin_length(rq_servact);
+ if (mx_resp_len == 0) {
+ status = MPATH_PR_SYNTAX_ERROR;
+ goto out;
+ }
+
cdb[1] = (unsigned char)(rq_servact & 0x1f);
cdb[7] = (unsigned char)((mx_resp_len >> 8) & 0xff);
cdb[8] = (unsigned char)(mx_resp_len & 0xff);
case MPATH_PRIN_RFSTAT_SA:
mx_resp_len = sizeof(struct print_fulldescr_list) + sizeof(struct prin_fulldescr *)*32;
break;
+ default:
+ condlog(0, "invalid service action, %d", rq_servact);
+ mx_resp_len = 0;
+ break;
}
return mx_resp_len;
}
"Cannot write header to bindings file : %s",
strerror(errno));
/* cleanup partially written header */
- ftruncate(fd, 0);
+ if (ftruncate(fd, 0))
+ condlog(0, "Cannot truncate the header : %s",
+ strerror(errno));
goto fail;
}
fsync(fd);
condlog(0, "Cannot write binding to bindings file : %s",
strerror(errno));
/* clear partial write */
- ftruncate(fd, offset);
+ if (ftruncate(fd, offset))
+ condlog(0, "Cannot truncate the header : %s",
+ strerror(errno));
return NULL;
}
c = strchr(buf, ' ');
int
construct_transportid(const char * lcp, struct transportid transid[], int num_transportids)
{
- unsigned char * tidp;
int k = 0;
int j, n, b, c, len, alen;
const char * ecp;
if (ecp && (isip > ecp))
isip = NULL;
len = ecp ? (ecp - lcp) : (int)strlen(lcp);
- memset(&tidp, 0, 24);
transid[num_transportids].format_code = (isip ? MPATH_WWUI_PORT_IDENTIFIER:MPATH_WWUI_DEVICE_NAME);
transid[num_transportids].protocol_id = MPATH_PROTOCOL_ID_ISCSI;
alen = len + 1; /* at least one trailing null */
static int
uev_update_path (struct uevent *uev, struct vectors * vecs)
{
- int retval, ro;
+ int ro, retval = 0;
ro = uevent_get_disk_ro(uev);
}
close(STDIN_FILENO);
- dup(dev_null_fd);
+ if (dup(dev_null_fd) < 0) {
+ fprintf(stderr, "cannot dup /dev/null to stdin : %s\n",
+ strerror(errno));
+ _exit(0);
+ }
close(STDOUT_FILENO);
- dup(dev_null_fd);
+ if (dup(dev_null_fd) < 0) {
+ fprintf(stderr, "cannot dup /dev/null to stdout : %s\n",
+ strerror(errno));
+ _exit(0);
+ }
close(STDERR_FILENO);
- dup(dev_null_fd);
+ if (dup(dev_null_fd) < 0) {
+ fprintf(stderr, "cannot dup /dev/null to stderr : %s\n",
+ strerror(errno));
+ _exit(0);
+ }
close(dev_null_fd);
daemon_pid = getpid();
return 0;
}
/* make sure we don't lock any path */
- chdir("/");
+ if (chdir("/") < 0)
+ fprintf(stderr, "can't chdir to root directory : %s\n",
+ strerror(errno));
umask(umask(077) | 022);
conf = alloc_config();