ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

互斥元如何泄漏受保护数据

2019-11-14 21:57:06  阅读:263  来源: 互联网

标签:do 保护 void some 互斥 something 泄漏 data


如果受保护的数据的指针或引用,被任意函数返回,或者将受保护的数据传至到互斥元之外的函数,在外部储存。这样的话任意函数都可以对其访问(可能对其修改)。

代码如下:

class some_data 
{
    int a;
    string a;
public:
    void do_something();
};

class data_wrapper
{
private:
    some_data data;
    mutex m;
public:
    template<typename Function>
    void process_data(Function func) 
    {
        lock_guard<mutex> l(m);
        func(data); //将受保护的数据传递给互斥元范围
    }
};

some_data* unprotected;

void malicious_function(some_data & protected_data) 
{
    unprotected->do_something();
}
data_wrapper x;

int main() 
{
    x.process_data(malicious_function); //恶意传值
    unprotected->do_something(); //对受到保护的对象进行访问
    system("pause");
    return 0;
}

不要将对受保护数据的指针和引用传递锁的范围之外,无论是通过函数返回它们,将其存放在外部可见的内存中,还是作为参数传递给其他的函数。

标签:do,保护,void,some,互斥,something,泄漏,data
来源: https://www.cnblogs.com/----MAX/p/11862805.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有