-/* @(#) $Id$ */
+/* @(#) $Id: ./src/rootcheck/win-common.c, 2011/09/08 dcid Exp $
+ */
/* Copyright (C) 2009 Trend Micro Inc.
* All right reserved.
* License (version 2) as published by the FSF - Free Software
* Foundation
*/
-
-
+
+
#include "shared.h"
#include "rootcheck.h"
-#ifdef WIN32
+#ifdef WIN32
/** Registry checking values **/
/* Global variables */
HKEY rk_sub_tree;
-
+
/* Default values */
#define MAX_KEY_LENGTH 255
#define MAX_KEY 2048
*/
int os_check_ads(char *full_path)
{
- HANDLE file_h;
+ HANDLE file_h;
WIN32_STREAM_ID sid;
void *context = NULL;
- char stream_name[MAX_PATH +1];
- char final_name[MAX_PATH +1];
+ char stream_name[MAX_PATH +1];
+ char final_name[MAX_PATH +1];
DWORD dwRead, shs, dw1, dw2;
/* Opening file */
- file_h = CreateFile(full_path,
+ file_h = CreateFile(full_path,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_POSIX_SEMANTICS,
NULL);
- if (file_h == INVALID_HANDLE_VALUE)
- {
+ if (file_h == INVALID_HANDLE_VALUE)
+ {
return 0;
}
while(1)
{
- if(BackupRead(file_h, (LPBYTE) &sid, shs, &dwRead,
+ if(BackupRead(file_h, (LPBYTE) &sid, shs, &dwRead,
FALSE, FALSE, &context) == 0)
{
break;
stream_name[0] = '\0';
stream_name[MAX_PATH] = '\0';
- if(BackupRead(file_h, (LPBYTE)stream_name,
- sid.dwStreamNameSize,
+ if(BackupRead(file_h, (LPBYTE)stream_name,
+ sid.dwStreamNameSize,
&dwRead, FALSE, FALSE, &context))
{
if(dwRead != 0)
char op_msg[OS_SIZE_1024 +1];
snprintf(final_name, MAX_PATH, "%s", full_path);
-
+
max_path_size = strlen(final_name);
-
+
/* Copying from wide char to char. */
while((i < dwRead) && (max_path_size < MAX_PATH))
}
/* Getting next */
- if(!BackupSeek(file_h, sid.Size.LowPart, sid.Size.HighPart,
+ if(!BackupSeek(file_h, sid.Size.LowPart, sid.Size.HighPart,
&dw1, &dw2, &context))
{
break;
/* Setting sub tree */
if((strcmp(reg_entry, "HKEY_LOCAL_MACHINE") == 0) ||
- (strcmp(reg_entry, "HKLM") == 0))
+ (strcmp(reg_entry, "HKLM") == 0))
{
rk_sub_tree = HKEY_LOCAL_MACHINE;
}
{
/* Setting sub tree to null */
rk_sub_tree = NULL;
-
+
/* Returning tmp_str to the previous value */
if(tmp_str && (*tmp_str == '\0'))
*tmp_str = '\\';
value_buffer[MAX_VALUE_NAME] = '\0';
data_buffer[MAX_VALUE_NAME] = '\0';
var_storage[MAX_VALUE_NAME] = '\0';
-
+
/* Getting each value */
for(i=0;i<value_count;i++)
var_storage[0] = '\0';
rc = RegEnumValue(hKey, i, value_buffer, &value_size,
- NULL, &data_type, data_buffer, &data_size);
+ NULL, &data_type, (LPBYTE)data_buffer, &data_size);
/* No more values available */
*/
if(!reg_value)
{
- return(1);
+ return(1);
}
-
+
/* Writing value into a string */
switch(data_type)
{
int size_available;
-
+
case REG_SZ:
case REG_EXPAND_SZ:
snprintf(var_storage, MAX_VALUE_NAME, "%s", data_buffer);
break;
case REG_MULTI_SZ:
-
+
/* Printing multiple strings */
size_available = MAX_VALUE_NAME -3;
mt_data = data_buffer;
{
strncat(var_storage, mt_data, size_available);
strncat(var_storage, " ", 2);
- size_available = MAX_VALUE_NAME -
+ size_available = MAX_VALUE_NAME -
(strlen(var_storage) +2);
}
mt_data += strlen(mt_data) +1;
}
-
+
break;
case REG_DWORD:
- snprintf(var_storage, MAX_VALUE_NAME,
+ snprintf(var_storage, MAX_VALUE_NAME,
"%x",(unsigned int)*data_buffer);
break;
default:
return(0);
}
-
+
/* int __os_winreg_open_key(char *subkey)
* Open the registry key
*/
-int __os_winreg_open_key(char *subkey, char *full_key_name,
+int __os_winreg_open_key(char *subkey, char *full_key_name,
char *reg_option, char *reg_value)
{
int ret = 1;
HKEY oshkey;
-
+
if(RegOpenKeyEx(rk_sub_tree, subkey, 0, KEY_READ,&oshkey) != ERROR_SUCCESS)
{
return(0);
ret = __os_winreg_querykey(oshkey, subkey, full_key_name,
reg_option, reg_value);
}
-
-
+
+
RegCloseKey(oshkey);
return(ret);
}
{
char *rk;
-
+
rk = __os_winreg_getkey(entry_name);
if(rk_sub_tree == NULL || rk == NULL)
{