首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flawfinder错误-内部缓冲区溢出。如何限制字符串输入大小并防止其溢出?

Flawfinder错误-内部缓冲区溢出。如何限制字符串输入大小并防止其溢出?
EN

Stack Overflow用户
提问于 2020-10-11 14:32:20
回答 1查看 422关注 0票数 0

我有以下代码:

代码语言:javascript
复制
void parseOptions(int argc, char* argv[]) {
std::string mob;
int option, index;

    struct option long_options[] = {{"version", no_argument, 0, 'V'},
                                  {"mobile-interface", required_argument, 0, 'm'},
                                  {0, 0}};

    while ((option = getopt_long(argc, argv, "Vm:", long_options, &index)) != -1) {
      switch (option) {
        case 'V':
          printVersion();
          break;
        case 'm':
          if (strlen(optarg) == HASHED_MOB_SIZE) {
            mob = optarg;
          }
          break;
        default:
          std::cerr << "Getopt switch default case shouldn't be reached... aborting program.\n";
          exit(ERR_GETOPT_FAILURE);
      }
    }
}

我运行Flawfinder并得到以下错误:

main.cpp:48:3. getopt_long:一些旧的实现无法防止内部缓冲区溢出(CWE-120,CWE-20)。检查安装时的实现,或限制所有字符串输入的大小。

如何限制字符串输入大小?

EN

回答 1

Stack Overflow用户

发布于 2020-12-21 13:20:46

所以Flawfinder是对的。

getopt中存在一个漏洞:CVE-1999-0966

libc中Solaris getopt中的缓冲区溢出允许本地用户通过一个长的argv获得根权限。

我的解决方案是验证argc大于1,而argv[0]不是太长。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64305167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档