使用以下命令在Linux Mint 17上成功备份了我的Nokia C2-01

gammu backup my_backup_file


我惊骇地发现我无法还原该文件。在做

gammu restore my_backup_file


结果是:

*** buffer overflow detected ***: gammu terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f2b8935408c]
/lib/x86_64-linux-gnu/libc.so.6(+0x111020)[0x7f2b89353020]
/usr/lib/libGammu.so.7(LoadBackup+0x1e4)[0x7f2b89af7584]
gammu(ReadBackup+0x22)[0x42d552]
gammu(Restore+0x44)[0x42d784]
gammu(ProcessParameters+0x201)[0x42a261]
gammu(main+0x641)[0x40aa81]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f2b89263de5]
gammu[0x40ab35]


This page看起来非常相关,但是如何修复备份文件以使其成功还原?

最佳答案

this mailing list post


  原因是原始备份文件中的“创建者”字段具有
  84个字符... [b] ut GSM_Backup结构将该字符串的字段定义为:char Creator [80];


令人难以置信的技术含量低的解决方案是对备份文件进行文本编辑,并缩短Creator字段:

Gammu 1.30.0, Linux, kernel 2.6.34.10-0.6-default (#1 SMP 2011-12-13 18:27:38 +0100


确保少于80个字符。这样,备份还原就可以完美运行了!

关于python - gammu恢复期间检测到缓冲区溢出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25416290/

10-11 23:20