Browse code

c4w: tag clam detections

aCaB authored on 2010/12/17 10:25:23
Showing 1 changed files
... ...
@@ -766,7 +766,7 @@ int CLAMAPI Scan_ScanObjectByHandle(CClamAVScanner *pScanner, HANDLE object, int
766 766
 	CLAM_SCAN_INFO si;
767 767
 	CLAM_ACTION act;
768 768
 	DWORD cbperf;
769
-	wchar_t wvirname[MAX_VIRNAME_LEN];
769
+	wchar_t wvirname[MAX_VIRNAME_LEN] = L"Clam.";
770 770
 	LONG lo = 0, hi = 0, hi2 = 0;
771 771
 
772 772
 	si.cbSize = sizeof(si);
... ...
@@ -774,10 +774,10 @@ int CLAMAPI Scan_ScanObjectByHandle(CClamAVScanner *pScanner, HANDLE object, int
774 774
 	si.scanPhase = SCAN_PHASE_FINAL;
775 775
 	si.errorCode = CLAMAPI_SUCCESS;
776 776
 	if(res == CL_VIRUS) {
777
-	    if(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, virname, -1, wvirname, MAX_VIRNAME_LEN))
777
+	    if(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, virname, -1, &wvirname[5], MAX_VIRNAME_LEN - 5))
778 778
 		si.pThreatName = wvirname;
779 779
 	    else
780
-		si.pThreatName = L"INFECTED";
780
+		si.pThreatName = L"Clam.INFECTED";
781 781
 	} else
782 782
 	    si.pThreatName = NULL;
783 783
 	logg("*in final_cb with clamav context %p, instance %p, fd %d, result %d, virusname %S)\n", &sctx, inst, fd, res, si.pThreatName);
... ...
@@ -822,8 +822,9 @@ int CLAMAPI Scan_ScanObjectByHandle(CClamAVScanner *pScanner, HANDLE object, int
822 822
 	    scaninfo->pThreatType = threat_type(virname);
823 823
 	    wvirname = (wchar_t *)(scaninfo + 1);
824 824
 	    scaninfo->pThreatName = wvirname;
825
-	    if(!MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, virname, -1, wvirname, MAX_VIRNAME_LEN))
826
-		scaninfo->pThreatName = L"INFECTED";
825
+	    memcpy(wvirname, L"Clam.", 10);
826
+	    if(!MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, virname, -1, &wvirname[5], MAX_VIRNAME_LEN-5))
827
+		scaninfo->pThreatName = L"Clam.INFECTED";
827 828
 	    *pInfoList = infolist;
828 829
 	    logg("*Scan_ScanObjectByHandle (instance %p): created result list %p\n", inst, infolist);
829 830
 	}
... ...
@@ -916,7 +917,7 @@ cl_error_t postscan_cb(int fd, int result, const char *virname, void *context) {
916 916
     CLAM_ACTION act;
917 917
     HANDLE fdhdl;
918 918
     DWORD perf;
919
-    wchar_t wvirname[MAX_VIRNAME_LEN];
919
+    wchar_t wvirname[MAX_VIRNAME_LEN] = L"Clam.";
920 920
     LONG lo = 0, hi = 0, hi2 = 0;
921 921
 
922 922
     if(!context) {
... ...
@@ -932,10 +933,10 @@ cl_error_t postscan_cb(int fd, int result, const char *virname, void *context) {
932 932
     si.scanPhase = SCAN_PHASE_POSTSCAN;
933 933
     si.errorCode = CLAMAPI_SUCCESS;
934 934
     if(result == CL_VIRUS) {
935
-	if(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, virname, -1, wvirname, MAX_VIRNAME_LEN))
935
+	if(MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, virname, -1, &wvirname[5], MAX_VIRNAME_LEN-5))
936 936
 	    si.pThreatName = wvirname;
937 937
 	else
938
-	    si.pThreatName = L"INFECTED";
938
+	    si.pThreatName = L"Clam.INFECTED";
939 939
     } else
940 940
 	    si.pThreatName = NULL;
941 941
     logg("*in postscan_cb with clamav context %p, instance %p, fd %d, result %d, virusname %S)\n", context, inst, fd, result, si.pThreatName);