gpt4 book ai didi

c - 从不同文件传递时的指针损坏 Fedora 17

转载 作者:行者123 更新时间:2023-11-30 17:42:30 26 4
gpt4 key购买 nike

有人遇到过 Fedora Core 17 64 位中指针损坏的问题

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

海湾合作委员会gcc(GCC)4.7.2 20120921(红帽4.7.2-2)

例如,我有文件 A.c 包含函数 aaa() 返回或接受某个指针,B.c 有一个函数 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)

对此有什么想法吗?

感谢,谢谢

最佳答案

我已经找到了答案,一个基本的前向减速问题。从 32 位移植到 64 位时,如果您有任何在调用之前未声明的函数,则它返回的任何指针都将被剥离为 32 位。在线阅读它并追溯到我的复杂代码。希望这对某人有帮助。

问候

关于c - 从不同文件传递时的指针损坏 Fedora 17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20536761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com