Author: chandra
Date: 2008-10-07 15:20:14 +0200 (Tue, 07 Oct 2008)
New Revision: 1491

Modified:
   trunk/openvas-plugins/ChangeLog
   trunk/openvas-plugins/scripts/secpod_smb_func.inc
Log:
resolved an issue with fetching file version

Modified: trunk/openvas-plugins/ChangeLog
===================================================================
--- trunk/openvas-plugins/ChangeLog     2008-10-07 12:39:34 UTC (rev 1490)
+++ trunk/openvas-plugins/ChangeLog     2008-10-07 13:20:14 UTC (rev 1491)
@@ -1,4 +1,9 @@
 2008-10-07 Chandrashekhar B <[EMAIL PROTECTED]>
+       * scripts/secpod_smb_func.inc:
+         Resolved an issue, was fetching unwanted numbers in certain 
+          file versions patterns
+
+2008-10-07 Chandrashekhar B <[EMAIL PROTECTED]>
        * scripts/gb_thunderbird_mult_vuln_july08_lin.nasl,
          scripts/gb_seamonkey_mult_vuln_july08_lin.nasl,
          scripts/gb_firefox_detect_lin.nasl,

Modified: trunk/openvas-plugins/scripts/secpod_smb_func.inc
===================================================================
--- trunk/openvas-plugins/scripts/secpod_smb_func.inc   2008-10-07 12:39:34 UTC 
(rev 1490)
+++ trunk/openvas-plugins/scripts/secpod_smb_func.inc   2008-10-07 13:20:14 UTC 
(rev 1491)
@@ -35,87 +35,94 @@
 function GetVersion(socket, uid, tid, fid, offset, verstr, debug)
 {
 
-        local_var fsize, data, i, offset, tmp, version, ver, vers, len, retVal;
+  local_var fsize, data, i, offset, tmp, version, ver, vers, len, retVal;
 
-        pattern = "FileVersion";
-        if(verstr == "prod"){
-               pattern = "ProductVersion";
-        }
+  pattern = "F?i?l?e?V?e?r?s?i?o?n";
+  if(verstr == "prod"){
+    pattern = "P?r?o?d?u?c?t?V?e?r?s?i?o?n";
+  }
 
-       else if(verstr){
-               pattern = verstr;
-       }
+  else if(verstr){
+   pattern = verstr;
+  }
 
-        patlen = strlen(pattern);
- 
-        fsize = smb_get_file_size(socket:socket, uid:uid, tid:tid, fid:fid);
+  patlen = strlen(pattern);
 
-        if(isnull(offset))
-        {
-                if(fsize < 180224){
+  fsize = smb_get_file_size(socket:socket, uid:uid, tid:tid, fid:fid);
+
+  if(isnull(offset))
+  {
+    if(fsize < 180224){
+      offset = 0;
+    }
+    else{
+      offset = fsize - 180224;
+    }
+  }
+
+  if(offset < 0){
+     offset = fsize + offset;
+  }
  
-                        offset = 0;
-                }
-                else{
-                        offset = fsize - 180224;
-                }
-        }
- 
-        if(offset < 0){
-                offset = fsize + offset;
-        }
- 
-        start = offset;
- 
-        if (start < 0 || start > fsize)
-        {
-               start = fsize/2;
-        }
+  start = offset;
 
-        offset = start;
-        chunk = 16384;
+  if(start < 0 || start > fsize){
+    start = fsize/2;
+  }
 
-        for(i = 0; offset < fsize; i++)
+  offset = start;
+  chunk = 16384;
+
+  for(i = 0; offset < fsize; i++)
+  {
+    tmp = ReadAndX(socket:socket, uid:uid, tid:tid, fid:fid, count:chunk, 
off:offset);
+    if(tmp)
+    {
+      if(pattern == "build"){
+        tmp = str_replace(find:raw_string(0), replace:"", string:tmp);
+      }
+      else
+        tmp = str_replace(find:raw_string(0), replace:"?", string:tmp);
+
+      data += tmp;
+      version = strstr(data, pattern);
+      if(version)
+      {
+        len = strlen(version);
+        for(i = patlen; i < len; i++)
         {
-                tmp = ReadAndX(socket:socket, uid:uid, tid:tid, fid:fid, 
count:chunk, off:offset);
-                if(tmp)
-                {
-                        tmp = str_replace(find:raw_string(0), replace:"", 
string:tmp);
-                        data += tmp;
-                        version = strstr(data, pattern);
-                        if(version)
-                        {
-                                len = strlen(version);
-                                for(i = patlen; i < len; i++)
-                                {
-                                        if((ord(version[i]) < ord("0") || 
ord(version[i]) > ord("9")) &&
-                                           (version[i] != "." && version[i] != 
"," && version[i] != " "))
-                                       {
-                                               if(ver[strlen(ver)-1] == ".")
-                                               {
-                                                       vers = split(ver, 
sep:".", keep:0);
-                                                       foreach item (vers){
-                                                               retVal += 
string("." + item);
-                                                       }
-                                                       retVal -= string(".");
-                                                       return(retVal);
-                                               }
-                                                return (ver);
-                                        }
-                                       else if(version[i] == "," || version[i] 
== "."){
-                                               ver += ".";
-                                       }
-                                        else if(version[i] == " "){
-                                       }
-                                       else{
-                                                ver += version[i];
-                                        }
-                                }
-                        }
-                        offset += chunk;
-                }
+          if((ord(version[i]) < ord("0") || ord(version[i]) > ord("9")) &&
+             (version[i] != "." && version[i] != "," && version[i] != " " &&
+              version[i] != "?"))
+          {
+            if(ver[strlen(ver)-1] == ".")
+            {
+              vers = split(ver, sep:".", keep:0);
+              foreach item (vers){
+                retVal += string("." + item);
+              }
+              retVal -= string(".");
+                return(retVal);
+            }
+            return (ver);
+          }
+          else if(version[i] == "," || version[i] == "."){
+            ver += ".";
+          }
+          else if(ver && version[i] == "?" && version[i+1] == "?"){
+            return (ver);
+          }
+          else if(version[i] == " "||version[i] == "?"){
+          }
+          else{
+            ver += version[i];
+          }
         }
-        return NULL;
+      }
+      offset += chunk;
+    }
+  }
+  return NULL;
 }
 
 
@@ -129,7 +136,7 @@
 
 
 ########################################################################
-# Enumerate registry vaules for a given key
+# Enumerate registry values for a given key
 # param:
 #      key: REGISTRY_KEY
 #
@@ -542,4 +549,3 @@
                            count:count, off:offset);
         return content;
 }
- 

_______________________________________________
Openvas-commits mailing list
[email protected]
http://lists.wald.intevation.org/mailman/listinfo/openvas-commits

Reply via email to