查看问题详情

编号项目分类查看权限最后更新
0000052Magic Linux 2.5General公开2009-03-28 13:47
报告员sejishikong 分派给sejishikong  
优先级严重性小错误出现频率总是
状态 已解决处理状况已修正 
摘要0000052: apt-get 无法运行
描述运行apt-get check(或者其它命令)时出现:
apt-get: rpmds.c:518:rpmdsDupArgv: 断言“argv[ac] != ((void *)0)”失败。
标签没加标签.

活动

sejishikong

2009-03-28 13:33

管理员   ~0000142

原因是rpm的代码中的rpmdsDupArgv()函数对空的argv扔出了异常,而apt-get向它传递的就是空的argv.
补丁如下:
diff -ur rpm-4.6.0.orig/lib/rpmds.c rpm-4.6.0/lib/rpmds.c
--- rpm-4.6.0.orig/lib/rpmds.c 2009-03-28 13:30:14.000000000 +0800
+++ rpm-4.6.0/lib/rpmds.c 2009-03-28 13:31:23.000000000 +0800
@@ -514,15 +514,14 @@

     if (argv == NULL)
        return NULL;
- for (ac = 0; ac < argc; ac++) {
-assert(argv[ac] != NULL);
+ for (ac = 0; ac < argc && argv[ac]; ac++) {
        nb += strlen(argv[ac]) + 1;
     }
     nb += (ac + 1) * sizeof(*av);

     av = xmalloc(nb);
     t = (char *) (av + ac + 1);
- for (ac = 0; ac < argc; ac++) {
+ for (ac = 0; ac < argc && argv[ac]; ac++) {
        av[ac] = t;
        t = stpcpy(t, argv[ac]) + 1;
     }
~

问题历史

日期 用户名 字段 更改
2009-03-28 13:29 sejishikong 新建问题
2009-03-28 13:33 sejishikong 注释已添加: 0000142
2009-03-28 13:39 sejishikong 状态 新建 => 已解决
2009-03-28 13:39 sejishikong 处理状况 未处理 => 已修正
2009-03-28 13:39 sejishikong 分派给 => sejishikong
2009-03-28 13:46 sejishikong 状态 已解决 => 反馈
2009-03-28 13:46 sejishikong 处理状况 已修正 => 重新打开
2009-03-28 13:47 sejishikong 状态 反馈 => 已解决
2009-03-28 13:47 sejishikong 处理状况 重新打开 => 已修正