【问题标题】:Omitting prefix in XPATH (libxml2) leads to segmentation fault在 XPATH (libxml2) 中省略前缀会导致分段错误
【发布时间】:2017-08-31 14:25:27
【问题描述】:

我在我的 Mac (Darwin <hostname> 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64) 上安装了C libxml2 version 2.9.4 library,使用标准的./configure ; make ; make install 三连发命令。在尝试在没有前缀的 XPATH 上运行带有 -tree 选项的 testXPath 命令时,我遇到了分段错误。

~/home/libxml2-2.7.2 $ ./testXPath -tree "/abcde"
In testXPath function...
Compiled Expression : 0 elements  
  END
    END
      END
        END
          END
            END
              END
                END
                  END
                    END
                      END
                        END
                          END
                            END
                              END
                                END
                                  END
                                    END
                                      END
                                        END
                                          END
                                            END
                                              END
                                                END
                                                  END
                                                  END
                                                  END
                                                  END
                                                  END
                                                  END
                                                  END
...etc until:
Segmentation fault: 11

我深入研究了testXPath.c 代码,XPATH 的编译似乎有问题。

comp = xmlXPathCompile(BAD_CAST str);

如果我不提供前缀,返回的xmlXPathCompExprPtrlast 成员设置为-1。这会导致对xmlXPathDebugDumpCompExpr() 的调用出现故障。

在 xpath 中有前缀不会导致错误。我做错了吗?

【问题讨论】:

  • 不知道为什么这会被否决。
  • 遗憾的是,SO 允许您在不说明任何理由的情况下投反对票。有时这只是意味着某人今天过得很糟糕。

标签: c xml xpath segmentation-fault libxml2


【解决方案1】:

testXPath 是 libxml2 测试套件的一部分,预计不会由用户直接运行。如果要使用 libxml2 测试 XPath 表达式,请使用 xmllint--xpath 选项:

xmllint --xpath 'expr' XMLFILE

【讨论】:

  • xmlXPathCompile(),但是,为用户准备的库的一部分。这就是返回错误值的原因。
  • @ShivanKaul 如果您认为xmlXPathCompile 中存在错误,请提交bug report
猜你喜欢
  • 2020-10-28
  • 1970-01-01
  • 2013-04-12
  • 2020-06-21
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 2016-01-12
  • 2020-03-15
相关资源
最近更新 更多