[Snort-devel] Replace calls index() <deprecated> with strchr() in Snort 2.9.5

Bill Parker wp02855 at ...2499...
Fri Jul 19 15:08:22 EDT 2013


Hello All,

In reviewing various files in Snort-2.9.5, I found a number
of instances where index() <deprecated> was used, and the patch
files below replace calls to index() with strchr() <ANSI/ISO>.

In directory 'snort-2.9.5/src/detection-plugins', file
'sp_ip_tos_check.c', the following patch file replaces
calls to index() with strchr():

--- sp_ip_tos_check.c.orig      2013-07-18 12:27:51.397883953 -0700
+++ sp_ip_tos_check.c   2013-07-18 12:28:32.473881887 -0700
@@ -200,7 +200,7 @@
         start = &data[0];
     }

-    if(index(start, (int) 'x') == NULL && index(start, (int)'X') == NULL)
+    if(strchr(start, (int) 'x') == NULL && strchr(start, (int)'X') == NULL)
     {
         ds_ptr->ip_tos = (uint8_t)SnortStrtoulRange(start, &endTok, 10, 0,
UINT8_MAX);
         if ((endTok == start) || (*endTok != '\0'))
@@ -212,10 +212,10 @@
     else
     {
         /* hex? */
-        start = index(data,(int)'x');
+        start = strchr(data,(int)'x');
         if(!start)
         {
-            start = index(data,(int)'X');
+            start = strchr(data,(int)'X');
         }
         if (start)
         {

In directory 'snort-2.9.5/src/detection-plugins', file
'sp_pattern_match.c', the following patch file replaces
calls to index() with strchr() <this also contains a
previous patch for converting bzero() calls to memset()>:

--- sp_pattern_match.c.orig     2013-07-18 08:43:44.369888130 -0700
+++ sp_pattern_match.c  2013-07-18 12:33:24.026883058 -0700
@@ -1324,21 +1324,21 @@
     char *quote_one = NULL, *quote_two = NULL;
     char *comma = NULL;

-    quote_one = index(data, '"');
+    quote_one = strchr(data, '"');
     if (quote_one)
     {
-        quote_two = index(quote_one+1, '"');
+        quote_two = strchr(quote_one+1, '"');
         while ( quote_two && quote_two[-1] == '\\' )
-            quote_two = index(quote_two+1, '"');
+            quote_two = strchr(quote_two+1, '"');
     }

     if (quote_one && quote_two)
     {
-        comma = index(quote_two, ',');
+        comma = strchr(quote_two, ',');
     }
     else if (!quote_one)
     {
-        comma = index(data, ',');
+        comma = strchr(data, ',');
     }

     if (comma)
@@ -1471,7 +1471,7 @@
     PatternMatchData *ds_idx;

     /* clear out the temp buffer */
-    bzero(tmp_buf, MAX_PATTERN_SIZE);
+    memset(tmp_buf, '\0', MAX_PATTERN_SIZE);

     if (rule == NULL)
         ParseError("ParsePattern Got Null enclosed in quotation marks
(\")!");
@@ -1486,7 +1486,7 @@
     }

     /* find the start of the data */
-    start_ptr = index(rule, '"');
+    start_ptr = strchr(rule, '"');

     if (start_ptr != rule)
         ParseError("Content data needs to be enclosed in quotation marks
(\")!");
@@ -1530,8 +1530,7 @@
     dummy_end = (dummy_idx + size);

     /* why is this buffer so small? */
-    bzero(hex_buf, 3);
-    memset(hex_buf, '0', 2);
+    memset(hex_buf, '\0', 3);

     /* BEGIN BAD JUJU..... */
     while(idx < end_ptr)
@@ -1640,8 +1639,7 @@
                                     strtol(hex_buf, (char **) NULL,
16)&0xFF;

                                 dummy_size++;
-                                bzero(hex_buf, 3);
-                                memset(hex_buf, '0', 2);
+                                memset(hex_buf, '\0', 3);
                             }
                             else
                             {
@@ -2486,7 +2484,7 @@
         data++;

     /* grab everything between the starting " and the end one */
-    sptr = index(data, '"');
+    sptr = strchr(data, '"');
     eptr = strrchr(data, '"');

     if(sptr != NULL && eptr != NULL)
@@ -2545,8 +2543,8 @@
     }

     /* clear the line and rule buffers */
-    bzero((char *) buf, STD_BUF);
-    bzero((char *) rule_buf, STD_BUF);
+    memset((char *) buf, '\0', STD_BUF);
+    memset((char *) rule_buf, '\0', STD_BUF);
     frazes_count = 0;

     /* loop thru each list_file line and content to the rule */

In directory 'snort-2.9.5/src/detection-plugins', file
'sp_tcp_win_check.c', the following patch file replaces
calls to index() with strchr():

--- sp_tcp_win_check.c.orig     2013-07-18 12:36:11.167880131 -0700
+++ sp_tcp_win_check.c  2013-07-18 12:36:49.028881611 -0700
@@ -205,7 +205,7 @@
         start = &data[0];
     }

-    if(index(start, (int) 'x') == NULL && index(start, (int)'X') == NULL)
+    if(strchr(start, (int) 'x') == NULL && strchr(start, (int)'X') == NULL)
     {
         win_size = SnortStrtolRange(start, &endTok, 10, 0, UINT16_MAX);
         if ((endTok == start) || (*endTok != '\0'))
@@ -217,10 +217,10 @@
     else
     {
         /* hex? */
-        start = index(data,(int)'x');
+        start = strchr(data,(int)'x');
         if(!start)
         {
-            start = index(data,(int)'X');
+            start = strchr(data,(int)'X');
         }
         if (start)
         {

In directory 'snort-2.9.5/src/detection-plugins', file
'sp_replace.c', the following patch file replaces calls
to index() with strchr() <this also contains a previous
patch for converting bzero() calls to memset()>:

--- sp_replace.c.orig   2013-07-18 08:48:41.818893728 -0700
+++ sp_replace.c        2013-07-18 12:38:44.570878841 -0700
@@ -111,7 +111,7 @@
             file_name, file_line);
     }
     /* clear out the temp buffer */
-    bzero(tmp_buf, MAX_PATTERN_SIZE);
+    memset(tmp_buf, '\0', MAX_PATTERN_SIZE);

     while(isspace((int)*rule))
         rule++;
@@ -122,7 +122,7 @@
     }

     /* find the start of the data */
-    start_ptr = index(rule, '"');
+    start_ptr = strchr(rule, '"');

     if(start_ptr == NULL)
     {
@@ -163,8 +163,7 @@
     dummy_end = (dummy_idx + size);

     /* why is this buffer so small? */
-    bzero(hex_buf, 3);
-    memset(hex_buf, '0', 2);
+    memset(hex_buf, '\0', 3);

     /* BEGIN BAD JUJU..... */
     while(idx < end_ptr)
@@ -269,8 +268,7 @@
                                     strtol(hex_buf, (char **) NULL,
16)&0xFF;

                                 dummy_size++;
-                                bzero(hex_buf, 3);
-                                memset(hex_buf, '0', 2);
+                                memset(hex_buf, '\0', 3);
                             }
                             else
                             {


In directory 'snort-2.9.5/src/dynamic-preprocessors/sdf',
file  'sdf_pattern_match.c', the following patch file
replaces calls to index() with strchr():

--- sdf_pattern_match.c.orig    2013-07-18 12:40:51.368879507 -0700
+++ sdf_pattern_match.c 2013-07-18 12:41:17.518883291 -0700
@@ -82,7 +82,7 @@
         return;

     /* Locate first '{' */
-    bracket_index = index(*pii, '{');
+    bracket_index = strchr(*pii, '{');

     /* Brackets at the beginning have nothing to modify. */
     if (bracket_index == *pii)
@@ -97,7 +97,7 @@
         /* Ignore escaped brackets */
         if ((bracket_index > *pii) && (*(bracket_index-1) == '\\'))
         {
-            bracket_index = index(bracket_index+1, '{');
+            bracket_index = strchr(bracket_index+1, '{');
             continue;
         }

@@ -133,7 +133,7 @@
         num_brackets++;

         /* Next bracket */
-        bracket_index = index(bracket_index+1, '{');
+        bracket_index = strchr(bracket_index+1, '{');
     }

     /* By this point, the brackets all match up. */


In directory 'snort-2.9.5/src/dynamic-preprocessors/ftptelnet',
file 'pp_ftp.c', the following patch file replaces calls to
index() with strchr():

--- pp_ftp.c.orig       2013-07-18 12:44:46.451880548 -0700
+++ pp_ftp.c    2013-07-18 12:45:04.336881624 -0700
@@ -358,7 +358,7 @@
         strncpy(buf, tok, len);
         buf[len] = '\0';
     }
-    s = index(buf, delim);
+    s = strchr(buf, delim);

     if ( s ) *s = '\0';
     else *buf = '\0';
@@ -414,7 +414,7 @@
                 break;
         }
         /* advance to next field */
-        tok = index(tok, delim);
+        tok = strchr(tok, delim);
         field++;
     }

In directory 'snort-2.9.5/src/dynamic-preprocessors/ftptelnet',
file 'snort_ftptelnet.c', the following patch file replaces
calls to index() with strchr():

--- snort_ftptelnet.c.orig      2013-07-18 12:45:48.489881388 -0700
+++ snort_ftptelnet.c   2013-07-18 12:46:03.974880469 -0700
@@ -1915,7 +1915,7 @@
     }
     else if ( *fmt == *F_LITERAL )
     {
-        char* end = index(++fmt, *F_LITERAL);
+        char* end = strchr(++fmt, *F_LITERAL);
         int len = end ? end - fmt : 0;

         if ( len < 1 )

A 'make' and 'make install' results in a clean compile and
installation of the above patch files for Snort-2.9.5

Here is a listing of the files in the archive:

Archive:  index-patches.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
      775  07-18-2013 12:32   sp_ip_tos_check.c.patch
     2597  07-18-2013 12:35   sp_pattern_match.c.patch
      762  07-18-2013 12:38   sp_tcp_win_check.c.patch
      900  07-18-2013 12:43   sdf_pattern_match.c.patch
      484  07-18-2013 12:47   pp_ftp.c.patch
      354  07-18-2013 12:46   snort_ftptelnet.c.patch
     1003  07-18-2013 08:50   sp_replace.c.patch
---------                     -------
     6875                     7 files

I am attaching the patch files (as a zip archive) to
this e-mail

Bill Parker (wp02855 at gmail dot com)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.snort.org/pipermail/snort-devel/attachments/20130719/a52c1b49/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: index-patches.zip
Type: application/zip
Size: 4039 bytes
Desc: not available
URL: <https://lists.snort.org/pipermail/snort-devel/attachments/20130719/a52c1b49/attachment.zip>


More information about the Snort-devel mailing list