gpt4 book ai didi

c - 下面的代码有什么问题

转载 作者:行者123 更新时间:2023-11-30 15:58:38 25 4
gpt4 key购买 nike

以下函数从rabin_polynomial结构中获取文件偏移量,打开input_file进行md5指纹生成,并将结果写入fpfile

我的问题是,它有时似乎使用相同的 chunk_buffer 内容,为不同长度的 block 生成相似的指纹。

可能是什么原因?

我已分别使用其他输入测试了 md5 函数,它生成了正确的摘要。

   int write_rabin_fingerprints_to_binary_file(FILE *fpfile,FILE *input_file,
struct rabin_polynomial *head)
{
struct rabin_polynomial *poly=head;
unsigned char fing_print[33]={'\0'};
size_t bytes_read;
while(poly != NULL)
{
char *chunk_buffer;
chunk_buffer = (char*) malloc ((poly->length));
bytes_read=fread (chunk_buffer,1, poly->length,input_file);
if(bytes_read!=poly->length)
{
printf("Error reading from%s ",input_file);
return -1;
}
strncpy((char*)fing_print,md5(chunk_buffer).c_str(),32);
size_t ret_val=fprintf(fpfile, "%llu\t%lu\t%s\n",poly->start,
poly->length,fing_print);

if(ret_val == 0)
{
fprintf(stderr, "Could not write rabin polynomials to file.");
return -1;
}

poly=poly->next_polynomial;
free(chunk_buffer);
}

return 0;
}

编辑:

我正在使用 Visual Studio 2010 运行此程序。在 ma​​lloc() 行中将类型转换为 char * 会产生问题吗?

读取的字节数与参数中指定的相同。

最佳答案

代码中没有任何错误会导致此类错误。我刚刚发现发生这种情况是因为零长度字符串,也称为文件漏洞

关于c - 下面的代码有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9633322/

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