草庐IT

buffer-overflow

全部标签

c++ - "printf("%s 行的内存漏洞应该是 %s", argv[1]);"被描述为堆栈溢出?

今天,我从Elance.com参加了一个简短的“C++技能测试”。一个问题如下:Whatisthesecurityvulnerabilityofthefollowinglineofcode:printf("%s",argv[1]);Option1:FormatStringOption2:StackOverflow在看到问题的最初几秒钟后,用户被提供10秒钟来回答这个问题(或自动使问题失败)。(还有另外两个明显不相关的答案没有被Elance标记为正确答案。)我在找缓冲区溢出或缓冲区溢出作为一种选择。我本能地不喜欢答案堆栈溢出,因为在我的10秒内,我在精神上使用了我认为是standardd

c++ - 哪些 C/C++ 函数最常被错误使用并可能导致缓冲区溢出?

有人要求我维护一个充满内存泄漏的大型C++代码库。在四处寻找时,我发现我们有很多导致泄漏的缓冲区溢出(它是如何变得如此糟糕,我不想知道)。我决定首先删除缓冲区溢出,从危险函数开始。哪些C/C++函数最常被错误使用并可能导致缓冲区溢出?对于用于帮助查找缓冲区溢出的编译器和/或工具,我有createdanotherquestionthatdealswiththis 最佳答案 一般来说,任何不检查参数边界的函数。一个列表将是获取()scanf()strcpy()strcat()您应该使用大小有限的版本,如stncpy、strncat、fg

c++ - 哪些 C/C++ 函数最常被错误使用并可能导致缓冲区溢出?

有人要求我维护一个充满内存泄漏的大型C++代码库。在四处寻找时,我发现我们有很多导致泄漏的缓冲区溢出(它是如何变得如此糟糕,我不想知道)。我决定首先删除缓冲区溢出,从危险函数开始。哪些C/C++函数最常被错误使用并可能导致缓冲区溢出?对于用于帮助查找缓冲区溢出的编译器和/或工具,我有createdanotherquestionthatdealswiththis 最佳答案 一般来说,任何不检查参数边界的函数。一个列表将是获取()scanf()strcpy()strcat()您应该使用大小有限的版本,如stncpy、strncat、fg

c++ - 是否有一个表达式使用模来进行反向环绕 ("reverse overflow")?

对于任何受范围R=[x,y]限制的整数输入W,“溢出”,由于没有更好的术语,W超过R是W%(y-x+1)+x。如果W超过y,这会导致它回绕。作为这个原则的一个例子,假设我们遍历一个日历的月份:intthis_month=5;intnext_month=(this_month+1)%12;其中两个整数都介于0和11之间,包括0和11。因此,上面的表达式将整数“钳制”在R=[0,11]的范围内。这种使用表达式的方法简单、优雅且有利,因为它省略了分支。现在,如果我们想做同样的事情,但反过来呢?以下表达式有效:intlast_month=((this_month-1)%12+12)%12;但它

c++ - 是否有一个表达式使用模来进行反向环绕 ("reverse overflow")?

对于任何受范围R=[x,y]限制的整数输入W,“溢出”,由于没有更好的术语,W超过R是W%(y-x+1)+x。如果W超过y,这会导致它回绕。作为这个原则的一个例子,假设我们遍历一个日历的月份:intthis_month=5;intnext_month=(this_month+1)%12;其中两个整数都介于0和11之间,包括0和11。因此,上面的表达式将整数“钳制”在R=[0,11]的范围内。这种使用表达式的方法简单、优雅且有利,因为它省略了分支。现在,如果我们想做同样的事情,但反过来呢?以下表达式有效:intlast_month=((this_month-1)%12+12)%12;但它

c++ - iOS 上的 Google Protocol Buffer

是iOS的元语法静态库。..http://code.google.com/p/metasyntactic/wiki/ProtocolBuffers。..与常规的旧C++编译的原型(prototype)文件兼容吗?我确实不想使用生成Obj-C的捆绑编译器。有没有什么方法可以编译谷歌为iOS提供的库? 最佳答案 好的。在这种情况下,元句法库(或任何其他第3方库)似乎是不必要的。您可以直接将Google源代码添加到您的项目中。我在google讨论组中找到了NicolaFerruzzi的以下答案。..原来的答案在这里。..http://gr

c++ - iOS 上的 Google Protocol Buffer

是iOS的元语法静态库。..http://code.google.com/p/metasyntactic/wiki/ProtocolBuffers。..与常规的旧C++编译的原型(prototype)文件兼容吗?我确实不想使用生成Obj-C的捆绑编译器。有没有什么方法可以编译谷歌为iOS提供的库? 最佳答案 好的。在这种情况下,元句法库(或任何其他第3方库)似乎是不必要的。您可以直接将Google源代码添加到您的项目中。我在google讨论组中找到了NicolaFerruzzi的以下答案。..原来的答案在这里。..http://gr

c++ - 如何使用 Google Protocol Buffer 序列化为 char*?

我想将我的ProtocolBuffer序列化为char*。这可能吗?我知道可以按照以下方式序列化到文件:fstreamoutput("/home/eamorr/test.bin",ios::out|ios::trunc|ios::binary);if(!address_book.SerializeToOstream(&output)){cerr但我想序列化为C风格的char*以便通过网络传输。如何做到这一点?请记住,我对C++很陌生。 最佳答案 这很简单:size_tsize=address_book.ByteSizeLong();

c++ - 如何使用 Google Protocol Buffer 序列化为 char*?

我想将我的ProtocolBuffer序列化为char*。这可能吗?我知道可以按照以下方式序列化到文件:fstreamoutput("/home/eamorr/test.bin",ios::out|ios::trunc|ios::binary);if(!address_book.SerializeToOstream(&output)){cerr但我想序列化为C风格的char*以便通过网络传输。如何做到这一点?请记住,我对C++很陌生。 最佳答案 这很简单:size_tsize=address_book.ByteSizeLong();

c++ - 不明白 "assuming signed overflow"警告

我得到:warning:assumingsignedoverflowdoesnotoccurwhenassumingthat(X+c)在这一行:if(this->m_PositionIndex[in]m_EndIndex[in])m_PositionIndex和m_EndIndex类型itk::Index(http://www.itk.org/Doxygen/html/classitk_1_1Index.html),以及他们的operator[]返回signedlong.(这里是第37行:https://github.com/Kitware/ITK/blob/master/Module