Module Name: othersrc Committed By: agc Date: Mon Aug 8 02:24:33 UTC 2011
Modified Files: othersrc/external/bsd/iscsi/sbin/iscsictl: TODO iscsic_daemonif.c iscsic_driverif.c iscsic_globals.h iscsic_main.c iscsic_parse.c Log Message: Make this compile WARNS=4 To generate a diff of this commit: cvs rdiff -u -r1.1.1.1 -r1.2 othersrc/external/bsd/iscsi/sbin/iscsictl/TODO \ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c \ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c \ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h \ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c \ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: othersrc/external/bsd/iscsi/sbin/iscsictl/TODO diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/TODO:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/TODO:1.2 --- othersrc/external/bsd/iscsi/sbin/iscsictl/TODO:1.1.1.1 Mon May 2 07:01:06 2011 +++ othersrc/external/bsd/iscsi/sbin/iscsictl/TODO Mon Aug 8 02:24:33 2011 @@ -1,6 +1,5 @@ To Do ===== -mktemp() man page global buf - make local @@ -14,3 +13,4 @@ ctype.h u_int u_char +mktemp() Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.2 --- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.1.1.1 Mon May 2 07:01:03 2011 +++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c Mon Aug 8 02:24:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: iscsic_daemonif.c,v 1.1.1.1 2011/05/02 07:01:03 agc Exp $ */ +/* $NetBSD: iscsic_daemonif.c,v 1.2 2011/08/08 02:24:33 agc Exp $ */ /*- * Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc. @@ -49,7 +49,8 @@ iscsid_get_set_target_options_t opt; iscsid_response_t *rsp; iscsid_add_target_rsp_t *res; - int opts, auths, tlen, i; + unsigned i; + int opts, auths, tlen; uint32_t tid; tlen = cl_get_target(&targ, argc, argv, kind != SEND_TARGETS_LIST); @@ -134,7 +135,7 @@ iscsid_response_t *rsp; if (!cl_get_id('I', &req.id, argc, argv)) { - if (!cl_get_string('n', srch.strval, argc, argv)) { + if (!cl_get_string('n', (char *)srch.strval, argc, argv)) { arg_missing("Target ID or Name"); } check_extra_args(argc, argv); @@ -192,7 +193,8 @@ srch.search_kind = FIND_NAME; srch.list_kind = kind; - strlcpy(srch.strval, id.name, sizeof(srch.strval)); + strlcpy((char *)srch.strval, (char *)id.name, + sizeof(srch.strval)); send_request(ISCSID_SEARCH_LIST, sizeof(srch), &srch); rsp = get_response(FALSE); @@ -347,7 +349,7 @@ iscsid_response_t *trsp, *prsp; iscsid_get_target_rsp_t *targ; iscsid_get_portal_rsp_t *port; - int i; + unsigned i; /* get target info */ req.list_kind = kind; @@ -414,7 +416,7 @@ iscsid_get_list_req_t lst; iscsid_response_t *rsp; iscsid_get_list_rsp_t *list; - int i; + unsigned i; check_extra_args(argc, argv); @@ -512,10 +514,11 @@ int add_isns_server(int argc, char **argv) { - iscsid_add_isns_server_req_t arg = { {0} }; + iscsid_add_isns_server_req_t arg; iscsid_add_isns_server_rsp_t *res; iscsid_response_t *rsp; + (void) memset(&arg, 0x0, sizeof(arg)); if (!(cl_get_isns(&arg, argc, argv))) { arg_missing("Server Address"); } @@ -553,7 +556,7 @@ iscsid_response_t *rsp; if (!cl_get_id('I', &req, argc, argv)) { - if (!cl_get_string('a', srch.strval, argc, argv)) { + if (!cl_get_string('a', (char *)srch.strval, argc, argv)) { arg_missing("Server Address"); } check_extra_args(argc, argv); @@ -615,9 +618,10 @@ iscsid_response_t *rsp, *prsp; iscsid_get_list_rsp_t *list; iscsid_get_isns_server_rsp_t *isns; - iscsid_sym_id_t req = { 0 }; - int i; + iscsid_sym_id_t req; + unsigned i; + (void) memset(&req, 0x0, sizeof(req)); check_extra_args(argc, argv); /* get the list of servers */ @@ -674,11 +678,12 @@ int add_initiator(int argc, char **argv) { - iscsid_add_initiator_req_t req = { {0} }; + iscsid_add_initiator_req_t req; iscsid_add_initiator_rsp_t *res; iscsid_response_t *rsp; - if (!cl_get_string('a', req.address, argc, argv)) { + (void) memset(&req, 0x0, sizeof(req)); + if (!cl_get_string('a', (char *)req.address, argc, argv)) { arg_missing("Interface Address"); } cl_get_symname(req.name, argc, argv); @@ -709,9 +714,10 @@ int remove_initiator(int argc, char **argv) { - iscsid_sym_id_t req = { 0 }; + iscsid_sym_id_t req; iscsid_response_t *rsp; + (void) memset(&req, 0x0, sizeof(req)); if (!cl_get_id('I', &req, argc, argv)) { arg_missing("Initiator Portal ID"); } @@ -744,9 +750,10 @@ iscsid_response_t *rsp, *prsp; iscsid_get_list_rsp_t *list; iscsid_get_initiator_rsp_t *init; - iscsid_sym_id_t req = { 0 }; - int i; + iscsid_sym_id_t req; + unsigned i; + (void) memset(&req, 0x0, sizeof(req)); check_extra_args(argc, argv); /* get the list of servers */ @@ -831,7 +838,8 @@ /* else find the target by its TargetName */ srch.search_kind = FIND_TARGET_NAME; srch.list_kind = TARGET_LIST; - strlcpy(srch.strval, targ->TargetName, sizeof(srch.strval)); + strlcpy((char *)srch.strval, (char *)targ->TargetName, + sizeof(srch.strval)); send_request(ISCSID_SEARCH_LIST, sizeof(srch), &srch); rsp = get_response(FALSE); @@ -882,10 +890,11 @@ int login(int argc, char **argv) { - iscsid_login_req_t loginp = { {0} }; + iscsid_login_req_t loginp; iscsid_login_rsp_t *res; iscsid_response_t *rsp; + (void) memset(&loginp, 0x0, sizeof(loginp)); loginp.login_type = (cl_get_opt('m', argc, argv)) ? ISCSI_LOGINTYPE_NOMAP : ISCSI_LOGINTYPE_MAP; @@ -950,9 +959,10 @@ int add_connection(int argc, char **argv) { - iscsid_login_req_t loginp = { {0} }; + iscsid_login_req_t loginp; iscsid_response_t *rsp; + (void) memset(&loginp, 0x0, sizeof(loginp)); loginp.login_type = ISCSI_LOGINTYPE_MAP; cl_get_id('I', &loginp.session_id, argc, argv); @@ -1024,13 +1034,17 @@ iscsid_response_t *lrsp, *rsp; iscsid_get_session_list_rsp_t *list; iscsid_session_list_entry_t *ent; - iscsid_get_connection_info_req_t creq = { {0} }; + iscsid_get_connection_info_req_t creq; iscsid_get_connection_info_rsp_t *info; - iscsid_sym_id_t clreq = { 0 }; + iscsid_sym_id_t clreq; iscsid_get_connection_list_rsp_t *clinfo; iscsid_connection_list_entry_t *clent; - int i, j, lconn; + unsigned i; + unsigned j; + int lconn; + (void) memset(&creq, 0x0, sizeof(creq)); + (void) memset(&clreq, 0x0, sizeof(clreq)); lconn = cl_get_opt('c', argc, argv); check_extra_args(argc, argv); @@ -1099,14 +1113,15 @@ int set_node_name(int argc, char **argv) { - iscsid_set_node_name_req_t req = { {0} }; + iscsid_set_node_name_req_t req; iscsid_response_t *rsp; uint64_t isid; - if (!cl_get_string('n', req.InitiatorName, argc, argv)) { + (void) memset(&req, 0x0, sizeof(req)); + if (!cl_get_string('n', (char *)req.InitiatorName, argc, argv)) { arg_missing("Initiator Name"); } - cl_get_string('A', req.InitiatorAlias, argc, argv); + cl_get_string('A', (char *)req.InitiatorAlias, argc, argv); isid = cl_get_longlong('i', argc, argv); hton6(req.ISID, isid); Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.2 --- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.1.1.1 Mon May 2 07:01:04 2011 +++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c Mon Aug 8 02:24:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: iscsic_driverif.c,v 1.1.1.1 2011/05/02 07:01:04 agc Exp $ */ +/* $NetBSD: iscsic_driverif.c,v 1.2 2011/08/08 02:24:33 agc Exp $ */ /*- * Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc. @@ -32,11 +32,12 @@ #include "iscsic_globals.h" #include <ctype.h> +#include <inttypes.h> typedef struct { - uint8_t asc; - uint8_t ascq; - char *key; + uint8_t asc; + uint8_t ascq; + const char *key; } asc_tab_t; asc_tab_t asctab[] = { @@ -259,7 +260,7 @@ if (!sid.id) { srch.list_kind = SESSION_LIST; srch.search_kind = FIND_NAME; - strlcpy(srch.strval, sid.name, sizeof(srch.strval)); + strlcpy((char *)srch.strval, (char *)sid.name, sizeof(srch.strval)); srch.intval = 0; send_request(ISCSID_SEARCH_LIST, sizeof(srch), &srch); @@ -285,7 +286,7 @@ */ void -dump_data(char *title, void *buffer, int len) +dump_data(const char *title, void *buffer, int len) { uint8_t *bp = (uint8_t *) buffer; int i, nelem; @@ -334,7 +335,7 @@ for (pt = asctab; pt->key != NULL && asc >= pt->asc; pt++) { if (asc == pt->asc && ascq == pt->ascq) { - bp = &buf[1024]; + bp = (char *)&buf[1024]; (void) snprintf(bp, sizeof(buf) - 1024, "%s: %s", str, pt->key); return bp; @@ -358,8 +359,9 @@ int do_ioctl(iscsi_iocommand_parameters_t * io, int rd) { - int rc; - char *es; + char *esp; + char es[64]; + int rc; io->req.databuf = buf; io->req.senselen = sizeof(io->req.sense); @@ -371,40 +373,39 @@ if (io->req.senselen_used) { switch (io->req.sense[2] & 0x0f) { case 0x01: - es = "Recovered Error"; + (void) snprintf(esp = es, sizeof(es), "Recovered Error"); break; case 0x02: - es = "Not Ready"; + (void) snprintf(esp = es, sizeof(es), "Not Ready"); break; case 0x03: - es = "Medium Error"; + (void) snprintf(esp = es, sizeof(es), "Medium Error"); break; case 0x04: - es = "Hardware Error"; + (void) snprintf(esp = es, sizeof(es), "Hardware Error"); break; case 0x05: - es = "Illegal Request"; + (void) snprintf(esp = es, sizeof(es), "Illegal Request"); break; case 0x06: - es = "Unit Attention"; + (void) snprintf(esp = es, sizeof(es), "Unit Attention"); break; case 0x07: - es = "Data Protect"; + (void) snprintf(esp = es, sizeof(es), "Data Protect"); break; case 0x08: - es = "Blank Check"; + (void) snprintf(esp = es, sizeof(es), "Blank Check"); break; default: - es = &buf[256]; - (void) snprintf(es, sizeof(buf) - 256, "Sense key 0x%x", + (void) snprintf(esp = (char *)&buf[256], sizeof(buf) - 256, "Sense key 0x%x", io->req.sense[2] & 0x0f); break; } if (io->req.senselen_used >= 14) { - es = add_asc_info(es, io->req.sense[12], io->req.sense[13]); + add_asc_info(esp, io->req.sense[12], io->req.sense[13]); } - (void) snprintf(buf, sizeof(buf), "Sense Data (%s):", es); - dump_data(buf, io->req.sense, io->req.senselen_used); + (void) snprintf((char *)buf, sizeof(buf), "Sense Data (%s):", esp); + dump_data((char *)buf, io->req.sense, io->req.senselen_used); return io->req.retsts; } @@ -430,10 +431,11 @@ int inquiry(int argc, char **argv) { - iscsi_iocommand_parameters_t io = { 0 }; + iscsi_iocommand_parameters_t io; char opt; int pag, rc; + (void) memset(&io, 0x0, sizeof(io)); if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) { return 1; } @@ -497,11 +499,12 @@ int read_capacity(int argc, char **argv) { - iscsi_iocommand_parameters_t io = { 0 }; + iscsi_iocommand_parameters_t io; int rc; uint32_t bsz; uint64_t lbn, cap; + (void) memset(&io, 0x0, sizeof(io)); if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) { return 1; } @@ -519,7 +522,7 @@ lbn = (uint64_t) ntohl(*((long *) buf)) + 1; bsz = ntohl(*((long *) &buf[4])); cap = lbn * bsz; - printf("Total Blocks: %qd, Block Size: %u, Capacity: %qd Bytes\n", + printf("Total Blocks: %" PRIu64 ", Block Size: %u, Capacity: %" PRIu64 " Bytes\n", lbn, bsz, cap); return 0; @@ -538,9 +541,10 @@ int test_unit_ready(int argc, char **argv) { - iscsi_iocommand_parameters_t io = { 0 }; + iscsi_iocommand_parameters_t io; int rc; + (void) memset(&io, 0x0, sizeof(io)); if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) { return 1; } @@ -572,11 +576,12 @@ int report_luns(int argc, char **argv) { - iscsi_iocommand_parameters_t io = { 0 }; + iscsi_iocommand_parameters_t io; int rc; uint32_t llen; uint64_t *lp; + (void) memset(&io, 0x0, sizeof(io)); if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) { return 1; } @@ -602,7 +607,7 @@ lp = (uint64_t *) & buf[8]; for (llen = min(llen, sizeof(buf) - 8) / 8; llen; llen--) { - printf(" 0x%qx\n", ntohq(*lp)); + printf(" 0x%" PRIx64 "\n", ntohq(*lp)); lp++; } return 0; Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.2 --- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.1.1.1 Mon May 2 07:01:04 2011 +++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h Mon Aug 8 02:24:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: iscsic_globals.h,v 1.1.1.1 2011/05/02 07:01:04 agc Exp $ */ +/* $NetBSD: iscsic_globals.h,v 1.2 2011/08/08 02:24:33 agc Exp $ */ /*- * Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc. @@ -64,10 +64,9 @@ typedef int (*cmdproc_t) (int, char **); -typedef struct -{ - char *cmd; - cmdproc_t proc; +typedef struct { + const char *cmd; + cmdproc_t proc; } command_t; @@ -144,10 +143,10 @@ /* iscsic_main.c */ -void arg_error(char *, char *, ...); -void arg_missing(char *); -void io_error(char *, ...); -void gen_error(char *, ...); +void arg_error(char *, const char *, ...); +void arg_missing(const char *); +void io_error(const char *, ...); +void gen_error(const char *, ...); void check_extra_args(int, char **); void status_error(unsigned); void status_error_slist(unsigned); @@ -188,7 +187,7 @@ /* iscsic_driverif.c */ uint32_t get_sessid(int, char **, int); -void dump_data(char *, void *, int); +void dump_data(const char *, void *, int); int do_ioctl(iscsi_iocommand_parameters_t *, int); int set_node_name(int, char **); int inquiry(int, char **); Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c:1.2 --- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c:1.1.1.1 Mon May 2 07:01:04 2011 +++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c Mon Aug 8 02:24:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: iscsic_main.c,v 1.1.1.1 2011/05/02 07:01:04 agc Exp $ */ +/* $NetBSD: iscsic_main.c,v 1.2 2011/08/08 02:24:33 agc Exp $ */ /*- * Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc. @@ -28,6 +28,10 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ +#include <sys/types.h> +#include <sys/param.h> +#include <sys/socket.h> +#include <sys/un.h> #include "iscsic_globals.h" #include "iscsi_test.h" @@ -35,15 +39,11 @@ #include <err.h> #include <errno.h> #include <fcntl.h> -#include <sys/socket.h> -#include <sys/un.h> #include <stdarg.h> #define DEVICE "/dev/iscsi0" -/* response socket name template */ -#define TEMPLATE "/tmp/iscsi_client.XXXXXX" - +#define ISCSICTL_VERSION "20110805" /* *-------- Table of commands and the associated handler function ------------- @@ -92,10 +92,9 @@ *-------- Table of error codes and the associated message text ------------- */ -typedef struct -{ - unsigned code; - char *str; +typedef struct { + unsigned code; + const char *str; } status_msg_t; static status_msg_t status_msg[] = { @@ -192,9 +191,11 @@ /* -------------------------------------------------------------------------- */ /* local variables */ -static struct sockaddr_un daemon_name; /* daemon socket name */ -static struct sockaddr_un myname; /* my socket name */ -static int sock; /* the socket */ +static struct sockaddr_un daemon_name; /* daemon socket name */ + +static char sockdir[MAXPATHLEN]; /* where myname lives */ +static struct sockaddr_un myname; /* my socket name */ +static int sock; /* the socket */ static char *cmdname; /* pointer to command name for error msgs */ @@ -221,9 +222,9 @@ static void bye(void) { - close(sock); - unlink(myname.sun_path); + (void) unlink(myname.sun_path); + (void) rmdir(sockdir); exit(EXIT_FAILURE); } @@ -241,15 +242,15 @@ */ void -arg_error(char *argp, char *fmt, ...) +arg_error(char *argp, const char *fmt, ...) { - va_list args; + char lbuf[BUF_SIZE]; va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + vsnprintf(lbuf, sizeof(lbuf), fmt, args); fprintf(stderr, "%s: %s: Invalid option at or near '%s': %s\n", - progname, cmdname, argp, buf); + progname, cmdname, argp, lbuf); bye(); } @@ -265,7 +266,7 @@ */ void -arg_missing(char *arg) +arg_missing(const char *arg) { warnx("%s: Missing argument: %s", cmdname, arg); bye(); @@ -284,14 +285,15 @@ */ void -io_error(char *fmt, ...) +io_error(const char *fmt, ...) { va_list args; + char lbuf[BUF_SIZE]; va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); + vsnprintf(lbuf, sizeof(lbuf), fmt, args); fprintf(stderr, "%s: %s: %s: %s\n", - progname, cmdname, buf, strerror(errno)); + progname, cmdname, lbuf, strerror(errno)); bye(); } @@ -308,13 +310,14 @@ */ void -gen_error(char *fmt, ...) +gen_error(const char *fmt, ...) { va_list args; + char lbuf[BUF_SIZE]; va_start(args, fmt); - vsnprintf(buf, sizeof(buf), fmt, args); - fprintf(stderr, "%s: %s: %s\n", progname, cmdname, buf); + vsnprintf(lbuf, sizeof(lbuf), fmt, args); + fprintf(stderr, "%s: %s: %s\n", progname, cmdname, lbuf); bye(); } @@ -434,7 +437,7 @@ to fit into the static buffer, alloc a temp buffer. */ - temp = temp || (len > (sizeof(buf) - sizeof(int))); + temp = temp || (len > (int)(sizeof(buf) - sizeof(int))); if (temp) { if (NULL == (pbuf = (int *) malloc(len + sizeof(int)))) @@ -494,7 +497,7 @@ len = sizeof(iscsid_request_t) + par_len; /* alloc buffer if static one is too small to hold request */ - req_temp = len > sizeof(buf); + req_temp = len > (int)sizeof(buf); if (req_temp) { req = malloc(len); @@ -534,14 +537,29 @@ int main(int argc, char **argv) { - command_t *c; - int res; - - if (argc < 2) - errx(1, "Usage: %s <command> <options>, see manual for details.", + command_t *c; + int res; + int i; + + (void) snprintf(sockdir, sizeof(sockdir), "/tmp/iscsictl.XXXXXX"); + while ((i = getopt(argc, argv, "d:v")) != -1) { + switch(i) { + case 'd': + (void) snprintf(sockdir, sizeof(sockdir), "%s", optarg); + break; + case 'v': + printf("%s version %s\n", *argv, ISCSICTL_VERSION); + break; + default: + break; + } + } + if (argc - optind < 1) { + errx(EXIT_FAILURE, "Usage: %s <command> <options>, see manual for details.", progname); + } - cmdname = argv[1]; + cmdname = argv[optind]; for (c = cmds; c->cmd != NULL; c++) { if (strcmp(c->cmd, cmdname) == 0) { @@ -549,36 +567,39 @@ } } if (c->cmd == NULL) { - errx(2, "Unknown command: '%s'\n", cmdname); + errx(EXIT_FAILURE, "Unknown command: '%s'", cmdname); } if ((driver = open(DEVICE, O_RDONLY)) < 0) { warn("Opening " DEVICE); #ifndef ISCSI_DEBUG /* DEBUG ONLY: Allow CLI to operate w/o driver */ - return 3; + return EXIT_FAILURE; #endif } sock = socket(AF_UNIX, SOCK_DGRAM, 0); if (sock < 0) - err(4, "opening datagram socket"); + err(EXIT_FAILURE, "opening datagram socket"); /* bind socket to unique name */ + if (mkdtemp(sockdir) == NULL) { + errx(EXIT_FAILURE, "can't create iscsictl dir '%s'", sockdir); + } myname.sun_family = AF_UNIX; - strlcpy(myname.sun_path, TEMPLATE, sizeof(myname.sun_path)); - mktemp(myname.sun_path); - if (bind(sock, (struct sockaddr *) &myname, sizeof(struct sockaddr_un))) + (void) snprintf(myname.sun_path, sizeof(myname.sun_path), "%s/socket", sockdir); + if (bind(sock, (struct sockaddr *) &myname, sizeof(struct sockaddr_un)) < 0) { io_error("Binding name to datagram socket"); - + } daemon_name.sun_family = AF_UNIX; strlcpy(daemon_name.sun_path, ISCSID_SOCK_NAME, sizeof(daemon_name.sun_path)); /* dispatch command */ - res = c->proc(argc - 2, &argv[2]); + res = (*c->proc)(optind + 1, &argv[optind + 1]); /* cleanup */ close(sock); unlink(myname.sun_path); + rmdir(sockdir); return res; } Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c:1.2 --- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c:1.1.1.1 Mon May 2 07:01:04 2011 +++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c Mon Aug 8 02:24:33 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: iscsic_parse.c,v 1.1.1.1 2011/05/02 07:01:04 agc Exp $ */ +/* $NetBSD: iscsic_parse.c,v 1.2 2011/08/08 02:24:33 agc Exp $ */ /*- * Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc. @@ -75,7 +75,7 @@ portal->port = (uint16_t) val; } /* is there a group tag? */ - for (; isdigit(*sp); sp++); + for (; isdigit((unsigned char)*sp); sp++); if (*sp && *sp != ',') arg_error(arg, "Bad address format: Extra character(s) '%c'", *sp); } else @@ -94,7 +94,7 @@ if (strlen(str) >= sizeof(portal->address)) arg_error(arg, "Bad address format: Address string too long"); - strlcpy(portal->address, str, sizeof(portal->address)); + strlcpy((char *)portal->address, str, sizeof(portal->address)); } @@ -112,7 +112,7 @@ */ STATIC uint16_t -get_short_int(char *sp, char *arg, char *name) +get_short_int(char *sp, char *arg, const char *name) { int val; @@ -169,7 +169,7 @@ */ STATIC void -get_str(char *dest, char *sp, char *arg, char *name) +get_str(char *dest, char *sp, char *arg, const char *name) { if (!sp || !*sp) @@ -232,7 +232,7 @@ switch (argv[i][1]) { case 'n': /* target name */ - get_str(targ->TargetName, sp, argv[i], "Target name"); + get_str((char *)targ->TargetName, sp, argv[i], "Target name"); break; case 'a': /* target address */ @@ -278,10 +278,11 @@ int cl_get_isns(iscsid_add_isns_server_req_t * srv, int argc, char **argv) { - iscsi_portal_address_t addr = { {0} }; + iscsi_portal_address_t addr; char *sp; int i, found; + (void) memset(&addr, 0x0, sizeof(addr)); found = FALSE; for (i = 0; i < argc; i++) { @@ -292,7 +293,7 @@ switch (argv[i][1]) { case 'N': /* symbolic name */ - get_str(srv->name, sp, argv[i], "Server name"); + get_str((char *)srv->name, sp, argv[i], "Server name"); break; case 'a': /* target address */ @@ -313,7 +314,7 @@ argv[i] = NULL; } - strlcpy(srv->address, addr.address, sizeof(srv->address)); + strlcpy((char *)srv->address, (char *)addr.address, sizeof(srv->address)); srv->port = addr.port; return found; @@ -375,15 +376,15 @@ break; case 'u': /* user name */ - get_str(auth->user_name, sp, argv[i], "User name"); + get_str((char *)auth->user_name, sp, argv[i], "User name"); break; case 's': /* secret */ - get_str(auth->password, sp, argv[i], "Secret"); + get_str((char *)auth->password, sp, argv[i], "Secret"); break; case 'S': /* target secret */ - get_str(auth->target_password, sp, argv[i], "Target secret"); + get_str((char *)auth->target_password, sp, argv[i], "Target secret"); break; default: @@ -587,7 +588,7 @@ if (strlen(sp) >= ISCSI_STRING_LENGTH) arg_error(argv[i], "ID String too long"); if (!sscanf(sp, "%d", &sid->id)) - strlcpy(sid->name, sp, sizeof(sid->name)); + strlcpy((char *)sid->name, sp, sizeof(sid->name)); else if (!sid->id) arg_error(argv[i], "Invalid ID"); @@ -634,12 +635,12 @@ if (!sp || !*sp) arg_error(argv[i], "Symbolic name missing"); - if (isdigit(*sp)) + if (isdigit((unsigned char)*sp)) arg_error(argv[i], "Symbolic name must not be numeric"); if (strlen(sp) >= ISCSI_STRING_LENGTH) arg_error(argv[i], "Symbolic name too long"); - strlcpy(sn, sp, ISCSI_STRING_LENGTH); + strlcpy((char *)sn, sp, ISCSI_STRING_LENGTH); if (!argv[i][2]) argv[i + 1] = NULL; @@ -903,7 +904,7 @@ if (!sp || !*sp) arg_error(argv[i], "Option value missing"); - if (!sscanf(sp, "%qi", &val)) + if (!sscanf(sp, "%qi", (long long *)(void *)&val)) arg_error(argv[i], "Integer expected"); if (!argv[i][2])