草庐IT

C++异常安全

全部标签

python - 为什么有一个特定的 WindowsError 但没有其他内置操作系统特定的异常?

Python内置了通用OSError的异常。,它有WindowsError它继承自OSError。文档解释说WindowsError是RaisedwhenaWindows-specificerroroccursorwhentheerrornumberdoesnotcorrespondtoanerrnovalue.不清楚的是为什么存在特定于Windows而不是特定于其他操作系统的错误。或者至少,为什么没有考虑其他操作系统特定的错误。可能这与“当错误号不对应于errno值时”相关,但这同样令人困惑。我认为errno只是异常返回的异常引发的属性。为什么会出现与errno值不对应的错误编号?

c# - .NET Environment 类返回的值是否可以安全地用于授权

我能确定Environmentclass返回的值吗?(尤其是UserName和UserDomainName)是否有效?有什么方法可以让用户注入(inject)自己的值以由这些属性返回?这对我很重要,因为我想使用这个值进行授权。 最佳答案 微软声明itshouldbesecure.YoucanusetheUserNamepropertytoidentifytheuseronthecurrentthread,tothesystemandapplicationforsecurityoraccesspurposes.Itcanalsobeu

windows - 复制文件安全权限

我正在将文件从文件夹A复制到文件夹B,然后尝试复制文件权限。以下是我使用的基本步骤:复制文件(源,目标)GetNamedSecurityInfo(来源,GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION)使用ConvertSecurityDescriptorToStringSecurityDescriptor打印源SDSetNamedSecurityInfo(目标,GROUP_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION)GetNamedSecurityInfo(目标,GROUP_SE

c++ - StackOverflowException 期间的向量化异常处理

如果我已经注册了自己的vector异常处理程序(VEH),并且在我的进程中发生了StackOverflow异常,当我到达VEH时,我是否能够在堆栈上分配更多内存?分配会导致我覆盖其他一些内存吗?会发生什么?我知道在.Net中,这就是为什么在线程创建期间提交整个堆栈的原因,但是假设我正在用native编写并且发生这种情况......我将能够在VEH中做什么?内存分配如何……? 最佳答案 在堆栈溢出的情况下,您将有一小部分堆栈可以使用。它的堆栈足以启动一个新线程,该线程将拥有一个全新的堆栈。从那里,您可以在终止之前做任何您需要做的事情。

windows - NetBeans PHP 不会因异常而中断

我正在尝试在Windows上使用带有XAMPP的NetBeansPHP6.8调试一些PHP,并在php.ini中设置xdebug。一步一步似乎工作正常,但当PHP网站上出现严重异常时,NetBeans不会中断它。我听说要在Exception上添加断点,但我在NetBeans6.8中找不到它。Ctrl+Shift+F8不会让我中断“异常”,只有“方法”。 最佳答案 正如您的评论所说,您通常需要将remote_mode设置为“jit”。如果调试不起作用,您可以检查以下几项:在您的代码中添加xdebug_break();行,并查看调试器是

c++ - 是否有适用于 Visual Studio C++ 6.0 的线程安全队列类?

我想在VS6.0中实现线程安全队列是否有一个好的类(class)可以用于此?这是一个使用CWinApp的MFC应用程序。我的former帖子带我到here但我没有在VS2010中编写代码的奢侈,因为我停留在6.0版。好吧……谢谢。 最佳答案 显然您接受了该问题的错误答案!:-)code我在我的答案中链接将适用于VC++6。 关于c++-是否有适用于VisualStudioC++6.0的线程安全队列类?,我们在StackOverflow上找到一个类似的问题: h

c++ - 创建安全的转义路径基础/文件名,检查是否安全

我想知道是否有一种生成可移植的文件系统安全文件名的通用方法。也就是说,我有一个用户输入的字符串,并希望生成一个名称与他们选择的名称非常相似的文件。生成的名称不得包含任何路径引用或其他特殊的文件系统特殊名称或标记。目前我只是用其他字符或空字符串替换一堆已知的坏字符。例如,给定名称ABC/DEF*:ACompany?我将生成字符串ABC-DEF-ACompany。我对替换字符的选择完全是随意的,因为我不知道通用的转义符号。所以我的相关问题是:是否有一种方法(可能在boost文件系统中)可以告诉我名称是否严格引用没有路径的文件?是否有函数告诉我该名称是否“安全”用作文件(对于某些文件系统,这

windows - 从应用程序调用命令行实用程序会产生安全问题吗?

我想知道当应用程序被设计为调用打开PDF文件并在文本文件或图像中产生一些信息的命令行实用程序时是否存在危险的安全性/安全问题。 最佳答案 想到操作系统命令注入(inject)。如果用户能够控制部分命令行(例如“AcroRd32.exefile.pdf”),如果攻击者可以控制文件名,那么就必须添加强白名单验证,这样“AcroRd32.exe”就可以了。exefile.pdf&&formatC:&&rem.pdf"例如不能注入(inject) 关于windows-从应用程序调用命令行实用程序

windows - WiX:在 ProgramFilesFolder 中安装应用程序会引发 AccessDenied 异常。为什么?

我有一个C#应用程序和一个WiX项目,用于将此应用程序安装在ProgramFilesFolder中。我的应用程序有一个使用dll文件的查看器元素。如果我以普通用户权限启动应用程序,我会收到一个错误,并且我的应用程序中的查看器元素不会加载,并显示我的查看器元素无权访问dll文件的错误消息。作为管理员用户,它工作正常。在我的WiX项目中,我设置了属性perMachine并且我在我的应用程序中使用了其他几个dll文件,但我没有收到此类错误。如果我在ProgramFilesFolder之外安装我的应用程序,则没有问题。我应该怎么办?在VS2010中,我可以为每个文件设置BuildAction和

c++ - 线程安全类的有序静态初始化

就结尾处的简短问题而言,这篇文章似乎太长了。但是我还需要描述一个我刚刚想出的设计模式。也许它很常用,但我从未见过它(或者它只是不起作用:)。首先,这里有一段代码(据我所知)由于“静态初始化顺序失败”而具有未定义的行为。问题是Spanish::s_englishToSpanish的初始化依赖于English::s_numberToStr,它们都是静态初始化的并且在不同的文件中,因此这些初始化的顺序是未定义的:文件:英文.h#pragmaonce#include#includeusingnamespacestd;structEnglish{staticvector*s_numberToSt