2013-12-12 47 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位。在线阅读并追溯我的复杂代码。 希望这可以帮助别人。

问候