For some reason, my previous patch didn't make it into CVS (due to an innocent C++ style comment, perhaps).

Attached please find the diff again, against current CVS.

Regards,
Y.
--- packet-dcerpc.c     2004-02-15 10:08:16.000000000 +0200
+++ ../packet-dcerpc.c  2004-02-05 14:18:52.000000000 +0200
@@ -418,6 +418,38 @@
 
 
 
+int ResolveWin32UUID(e_uuid_t if_id, char *UUID_NAME, int UUID_NAME_MAX_LEN)
+{
+#ifdef WIN32
+       char REG_UUID_NAME[MAX_PATH];
+       HKEY hKey = NULL;
+       DWORD UUID_MAX_SIZE = MAX_PATH;
+       char REG_UUID_STR[MAX_PATH];
+       
+       if(UUID_NAME_MAX_LEN < 2)
+               return 0;
+       REG_UUID_NAME[0] = '\0';
+       snprintf(REG_UUID_STR, MAX_PATH, 
"SOFTWARE\\Classes\\Interface\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+                       if_id.Data1, if_id.Data2, if_id.Data3,
+                       if_id.Data4[0], if_id.Data4[1],
+                       if_id.Data4[2], if_id.Data4[3],
+                       if_id.Data4[4], if_id.Data4[5],
+                       if_id.Data4[6], if_id.Data4[7]);
+       if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, (LPCSTR)REG_UUID_STR, 0, KEY_QUERY_VALUE, 
&hKey) == ERROR_SUCCESS)
+       {
+               if (RegQueryValueEx(hKey, NULL, NULL, NULL, (LPBYTE)REG_UUID_NAME, 
&UUID_MAX_SIZE) == ERROR_SUCCESS && UUID_MAX_SIZE <= MAX_PATH)
+                       {
+                       snprintf(UUID_NAME, UUID_NAME_MAX_LEN, "%s", REG_UUID_NAME);
+                       RegCloseKey(hKey);
+                       return strlen(REG_UUID_NAME);
+               }
+               RegCloseKey(hKey);
+       }
+#endif
+       return 0; /* we didn't find anything anyhow. Please don't use the string! */
+       
+}
+
 static dcerpc_info *
 get_next_di(void)
 {
@@ -2131,6 +2163,7 @@
     char uuid_str[DCERPC_UUID_STR_LEN]; 
     int uuid_str_len;
     dcerpc_auth_info auth_info;
+       char UUID_NAME[MAX_PATH];
 
     offset = dissect_dcerpc_uint16 (tvb, offset, pinfo, dcerpc_tree, hdr->drep,
                                     hf_dcerpc_cn_max_xmit, NULL);
@@ -2181,7 +2214,10 @@
 
          if (uuid_str_len >= DCERPC_UUID_STR_LEN)
                  memset(uuid_str, 0, DCERPC_UUID_STR_LEN);
-
+         if(ResolveWin32UUID(if_id, UUID_NAME, MAX_PATH))
+                 iface_item = proto_tree_add_string_format (ctx_tree, 
hf_dcerpc_cn_bind_if_id, tvb,
+                                        offset, 16, uuid_str, "Interface [%s] UUID: 
%s", UUID_NAME, uuid_str);
+         else
           iface_item = proto_tree_add_string_format (ctx_tree, 
hf_dcerpc_cn_bind_if_id, tvb,
                                         offset, 16, uuid_str, "Interface UUID: %s", 
uuid_str);
          iface_tree = proto_item_add_subtree(iface_item, ett_dcerpc_cn_iface);
@@ -2248,7 +2284,16 @@
          if ((value = g_hash_table_lookup(dcerpc_uuids, &key)))
                  col_append_fstr(pinfo->cinfo, COL_INFO, " UUID: %s", value->name);
          else
-                 col_append_fstr(pinfo->cinfo, COL_INFO, " UUID: 
%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x ver %u.%u",
+               if(ResolveWin32UUID(if_id, UUID_NAME, MAX_PATH))
+                       col_append_fstr(pinfo->cinfo, COL_INFO, " [%s] UUID: 
%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x ver %u.%u",
+                           UUID_NAME, if_id.Data1, if_id.Data2, if_id.Data3,
+                           if_id.Data4[0], if_id.Data4[1],
+                           if_id.Data4[2], if_id.Data4[3],
+                           if_id.Data4[4], if_id.Data4[5],
+                           if_id.Data4[6], if_id.Data4[7],
+                           if_ver, if_ver_minor);
+         else
+                       col_append_fstr(pinfo->cinfo, COL_INFO, " UUID: 
%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x ver %u.%u",
                            if_id.Data1, if_id.Data2, if_id.Data3,
                            if_id.Data4[0], if_id.Data4[1],
                            if_id.Data4[2], if_id.Data4[3],
_______________________________________________
Ethereal-dev mailing list
[EMAIL PROTECTED]
http://www.ethereal.com/mailman/listinfo/ethereal-dev

Reply via email to