session_data{
...
unsigned char data[256];
unsigned int data_size;
unsigned char szKeycodeTable[32][16];
...
}
Неизвестая проблема с передачей данных функции
Глюк собстевнно такой:
Я принимаю данные с сокета, взависимости от принятых данных создаю таблицу МД5 хэшэй, всего 32 Хэша сохраненный в структуре по имени
Код:
Эта функция должна расшифровать принятые данные, если МД5 ключей ещо нет то использует константные значения.
Код:
void decode( void *ptr, unsigned int len ){
crypt( ptr, len, sd->crypt_flag );
return;
}
void crypt( void *ptr, unsigned int len, int flag ){
if( flag == -1 ){
DecodeDataRC4( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_A );
DecodeDataFC1( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_B );
DecodeDataRC6( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_C );
}else{
//debug( &sd->szKeycodeTable[flag], 16 );
DecodeDataRC4( (unsigned char *)ptr, len, sd->szKeycodeTable[flag] );
DecodeDataRC6( (unsigned char *)ptr, len, sd->szKeycodeTable[flag+16] );
}
return;
}
crypt( ptr, len, sd->crypt_flag );
return;
}
void crypt( void *ptr, unsigned int len, int flag ){
if( flag == -1 ){
DecodeDataRC4( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_A );
DecodeDataFC1( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_B );
DecodeDataRC6( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_C );
}else{
//debug( &sd->szKeycodeTable[flag], 16 );
DecodeDataRC4( (unsigned char *)ptr, len, sd->szKeycodeTable[flag] );
DecodeDataRC6( (unsigned char *)ptr, len, sd->szKeycodeTable[flag+16] );
}
return;
}
если флаг == -1 значит таблица пустая, все расшифрововается нормально, ежиле нет, то возникает проблема.
Дело в том что функция DecodeDataRC4 и DecodeDataRC6 получает в в третьем аргументе далеко не то что находится в sd->szKeycodeTable[...] а левые данные!
Если я вызываю перед вызовом DecodeDataRC4, функцию записи в файл данных (void debug( const void *ptr, unsigned int len );), то записовается в файл нужные данные(МД5 хэш) а если я записоваю данные после передачи их функции то получаю левые данные, и падение моей программы с выходом на ЦПУ! причом МД5 всегда разный хранится в sd->szKeycodeTable, а записовается после передачи всегда одна последовательность байт, после убирания в настройках проекта галочки Use runtime RTL... байты стали писаться другие)
[COLOR="Blue"]Что скажите господа?[/COLOR]
Скажем выкладывайте код если хотите помощи.
У него не получится. Ибо зобанен. Думаю пока тему можно закрыть.