--- dhcpping/dhcping.c 2004/07/26 00:46:09 1.1 +++ dhcpping/dhcping.c 2004/07/26 02:49:32 1.2 @@ -1,5 +1,5 @@ // -// $Id: dhcping.c,v 1.1 2004/07/26 00:46:09 root Exp $ +// $Id: dhcping.c,v 1.2 2004/07/26 02:49:32 root Exp $ // /* @@ -109,11 +109,10 @@ printf ("Exceeded maximum options parameter(%d).\n", MAX_OPTIONS); break; } - char x[100+MAX_DATA]; - sprintf (x, "%%d:%%%ds", MAX_DATA); - sscanf (optarg, x, &cmdlineopts[opt].option, cmdlineopts[opt].data); - printf ("optarg: %s, opt: %d, cmd1: %d, cmd2: %s, x: %s" - , optarg, opt, cmdlineopts[opt].option, cmdlineopts[opt++].data, x); + char format[100+MAX_DATA]; + sprintf (format, "%%u:%%%ds", MAX_DATA); + sscanf (optarg, format, &cmdlineopts[opt].option, cmdlineopts[opt].data); + opt++; break; case 'S': sscanf (optarg, "%63s", sname);break; } @@ -356,8 +355,9 @@ } /* command line options */ while (opt--) { - sprintf (msgbuf, "%c%c%s", cmdlineopts[opt].option, (char *)(strlen (cmdlineopts[opt].data) + 1), cmdlineopts[opt].data); - addpacket(pktbuf, msgbuf, 2 + strlen (cmdlineopts[opt].data) + 1); + sprintf (msgbuf, "%c%c", cmdlineopts[opt].option, (char *)(strlen (cmdlineopts[opt].data))); + memcpy (&msgbuf[2], cmdlineopts[opt].data, strlen (cmdlineopts[opt].data)); + addpacket(pktbuf, msgbuf, 2 + strlen (cmdlineopts[opt].data)); } }