当前位置: 首页 > news >正文

safe system(linux)

一个简单的system指令,用于替换系统的system,避免注入,信号等问题

 

// safe_system.c
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include <errno.h>int safe_system(const char* cmd) {// check cmdif (strpbrk(cmd, "&|;$`\"'\\*?[]{}<>~#%^")) {errno = EINVAL;return -1;}pid_t pid = fork();if (pid == -1) return -1;if (pid == 0) {// clear envextern char** environ;char* minimal_env[] = {"PATH=/usr/bin:/bin", NULL};environ = minimal_env;execl("/bin/sh", "sh", "-c", cmd, (char*)NULL);_exit(126);}sigset_t mask, oldmask;sigemptyset(&mask);sigaddset(&mask, SIGCHLD);sigprocmask(SIG_BLOCK, &mask, &oldmask);int status;while (waitpid(pid, &status, 0) == -1) {if (errno != EINTR) {//waitpid errorsigprocmask(SIG_SETMASK, &oldmask, NULL);return -1;}}sigprocmask(SIG_SETMASK, &oldmask, NULL);if (WIFEXITED(status)) { int code = WEXITSTATUS(status);        if (code == 126 || code == 127) {errno = (code == 126) ? ENOEXEC : ENOENT;return -1;} else if (code != 0) {// application error(all) return -1errno = EIO;return -1;}} else if (WIFSIGNALED(status)) {// SIGNALED INTRerrno = EINTR;return -1;} else {errno = EIO;return -1;}return status;
}

 

http://www.gsyq.cn/news/54005.html

相关文章:

  • C尖笔记目录
  • 2025年11月门窗密封胶条十大品牌权威榜单:筑牢家居与建筑的 “节能防线”
  • 2025年高品质的木质建筑模板厂家最新推荐排行榜
  • 2025年口碑好的成都全品类五金厂家实力及用户口碑排行榜
  • 2025年口碑好的蛇形帘系统配件厂家最新TOP排行榜
  • 2025年比较好的小型平板硫化机行业内口碑厂家排行榜
  • libcurl FTP路径规范化漏洞解析:编码%2e%2e导致目录穿越
  • 2025 最新推荐修脚加盟品牌榜单:国际协会测评认证,非遗技艺 + 成熟运营体系优选指南修脚加盟培训 / 足疗修脚加盟 / 采耳修脚加盟 / 修脚培训加盟公司推荐
  • 2025年热门的烟台包装用户口碑最好的厂家榜
  • 算一算你的一餐,为地球“减负”多少?
  • 水平高的北京海淀区婚姻律师行业观察与参考
  • 2025年比较好的设计师集成阻尼铰链厂家最新权威推荐排行榜
  • 2025 年最新推荐打印贴标机厂家权威排行榜:自动/在线/实时/条码/智能/防爆/称重/平面打印贴标机公司推荐
  • 2025年评价高的聚氨酯发泡保温管道厂家推荐及选购指南
  • 2025 最新打印贴标一体机厂家口碑推荐榜:国际测评认证,覆盖多品类精准适配企业生产需求称重打印贴标一体机/实时打印贴标一体机/标签打印贴标一体机/条码打印贴标一体机/模块化打印贴标一体机公司推荐
  • 2025年11月离婚纠纷律师推荐评价:行业榜单与详细对比解析
  • 2025年质量好的玻璃钢夹砂排污管道优质厂家推荐榜单
  • C++之类和对象(上)(多例子详解this指针以及封装特性的初步引入) - 指南
  • 2025年11月中国遗产继承律师评价榜:从资质到案例的实战能力解析
  • 错题整理
  • 2025年靠谱的孤立导体测试仪厂家最新权威实力榜
  • P5256 [JSOI2013] 编程作业 个人题解
  • 2025年11月低空感知平台解决方案商推荐排行:中立评估与实用建议
  • 2025年质量好的昆明泡沫包装箱行业内知名厂家排行榜
  • 掌握数据手册:阅读数据手册综合指南
  • linux c读写文件
  • AI模型数据安全:别让“聪明的大脑”变成安全黑洞
  • 超大文件怎么发邮件:打破限制的安全传输解决方案
  • 2025年11月生成式引擎优化推荐:十大服务商技术实力与行业应用全景分析
  • 2025年靠谱的工业净化铝材厂家实力及用户口碑排行榜