2013-12-12 81 views
0

有沒有人碰到指針的這個問題在Fedora中得到損壞芯17 64指針腐敗的Fedora 17

Linux (none) 3.3.4-5.fc17.x86_64 #1 

GCC gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2)

比如我有文件AC包含函數aaa()返回或接受某個指針,Bc有一個函數bbb()返回或接受某個指針。 在我的情況我傳遞從BBB()爲AAA(上下文指針),這裏是什麼我通過

values e n d 0x2b440c0 0x2b4a190 0x2b57db0 

這裏是我收到的功能AAA()

values e n d 0x2b440c000000000 0x2b57db000000000 0x0 

我我沒有在這上面運行任何編譯器優化標誌。 雖然如果我在一個文件中同時維護這兩個函數,那麼事情會按預期正常工作。

在這裏添加一些代碼,這可能有助於

file: src/enc/encrypt.c 
function PopulateEncryptionKeys 

dataEncrypt->stRsa = RSA_new(); ---> this is ok 0x21d0440 
    if(dataEncrypt->stRsa == NULL) 
    { 

     return FALSE; 
    } 


    dataEncrypt->stRsa->e = BN_bin2bn("<hex data>", 1, dataEncrypt->stRsa->e); 
    dataEncrypt->stRsa->n = BN_bin2bn(dataEncrypt->m_nPublicKey, val, dataEncrypt->stRsa->n); 
    dataEncrypt->stRsa->d = BN_bin2bn(dataEncrypt->m_nPrivateExponent, val, dataEncrypt->stRsa->d); ----> these are ok 
    RSA_blinding_off(dataEncrypt->stRsa); 


file: src/enc/encrypt.c 
function: Decipher 

keyRetVal = RSAPrivateDecrypt(nDecryptedMessage,nDataBuffer,m_dataEncryption->stRsa,val,var); 

Uptill this the values of e n and d above are 
values e n d 0x2364090 0x23640d0 0x23a2c10 

This function calls another function part of crypto wraper, which inturn is supposed to to call BN_bn2bin 

file: src/crypto/wrapper.c 
function: RSAPrivateDecrypt 

int RSAPrivateDecrypt(unsigned char *decryptedBuffer,unsigned char *data, RSA* rsa, int flen, int reverseKeyData) 

RSAPrivateDecrypt: rsa is 0x20cc440 e n d 0x229ec1000000000 0x226009000000000 (nil) 

對這個有什麼想法?

欣賞,感謝

+3

如果您還沒有這樣做呢,請閱讀[堆棧溢出的問題清單(http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)。您可能還想了解[SSCCE](http://sscce.org/)是什麼。 –

+0

我已閱讀鏈接。我已經在網上搜索,找不到任何答案,如果你暗示了這個例子,代碼是合適的,並正在舉一個例子來發布:) – user1663533

+0

我想說的是我的評論,是你的沒有一些代碼,問題是不可能回答的。您不必顯示*所有*您的代碼,甚至*真實*代碼,只是一些示例代碼,顯示您正在做什麼。 –

回答

0

我已經找到了答案,一個基本向前decleration問題。從32位移植到64位時,如果你有任何在被調用之前沒有被聲明的函數,那麼它返回的任何指針將被去除爲32位。在線閱讀並追溯我的複雜代碼。 希望這可以幫助別人。

問候