diff -ur packit-0.7.1/src/injection.c packit-0.7.1-jc/src/injection.c
--- packit-0.7.1/src/injection.c	2003-10-03 06:18:55.000000000 -0400
+++ packit-0.7.1-jc/src/injection.c	2004-04-11 22:15:03.000000000 -0400
@@ -52,13 +52,9 @@
     signal(SIGHUP, injection_clean_exit);
 
     if(hex_payload)
-        if((payload = format_hex_payload(payload)) == NULL)
+        if((payload_len = format_hex_payload(payload)) == 0)
             fprintf(stdout, "Warning: Hex payload formatted incorrectly.\n");
              
-
-    if(payload != NULL)
-        payload_len = strlen(payload);
-
     if(s_d_port != NULL)
     {
         if(strstr(s_d_port, "-"))
diff -ur packit-0.7.1/src/utils.c packit-0.7.1-jc/src/utils.c
--- packit-0.7.1/src/utils.c	2004-01-21 21:13:06.000000000 -0500
+++ packit-0.7.1-jc/src/utils.c	2004-04-11 22:13:13.000000000 -0400
@@ -652,12 +652,14 @@
     return string;
 }
 
-u_int8_t *
+u_int32_t
 format_hex_payload(u_int8_t *string)
 {
     u_int8_t *i, pl[65535];
     u_int8_t *delim = " ";
+    u_int8_t tchar[2];
     long c; 
+    u_int32_t len = 0;
 
 #ifdef DEBUG
     fprintf(stdout, "DEBUG: format_hex_payload()\n");
@@ -667,16 +669,22 @@
     pl[0] = pl[1] = 20; 
 
     memset(string, 0, sizeof(u_int8_t *));
+    memset(tchar, 0, 2);
 
-    for(i = strtok(pl, delim);
+    /* 
+     * skip the first 3 chars because we know they are spaces
+     */
+    for(i = strtok(pl+3, delim);
         i;
         i = strtok(NULL, delim))
     {
         if((c = strtol(i, 0, 16)) > 0xff)
-            return NULL;
+            return 0;
 
-        sprintf(string, "%s%c", string, (u_int8_t)c);
+        sprintf(tchar,"%c",(u_int8_t)c);
+        strncpy(string+len,tchar,2);
+        len++;
     }
 
-    return string;
+    return len;
 }
diff -ur packit-0.7.1/src/utils.h packit-0.7.1-jc/src/utils.h
--- packit-0.7.1/src/utils.h	2003-10-03 07:04:26.000000000 -0400
+++ packit-0.7.1-jc/src/utils.h	2004-04-11 22:12:09.000000000 -0400
@@ -36,7 +36,7 @@
 u_int8_t *retrieve_icmp_type(u_int16_t);
 u_int8_t *retrieve_icmp_code(u_int16_t, u_int16_t);
 u_int8_t *generate_padding(u_int16_t, u_int16_t);
-u_int8_t *format_hex_payload(u_int8_t *);
+u_int32_t format_hex_payload(u_int8_t *);
 u_int16_t parse_port_range(u_int8_t *);
 u_int16_t retrieve_datalink_hdr_len(u_int32_t);
 u_int32_t retrieve_rand_int(u_int32_t);
