当前位置: 首页 > 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.jsqmd.com/news/44451/

相关文章:

  • 2025 年搅拌机厂家最新推荐排行榜:精选优质供应商权威指南行星搅拌机/双行星搅拌机/双行星动力搅拌机/行星式搅拌机公司推荐
  • CH395Q网络协议栈热插拔处理
  • C尖笔记目录
  • 2025年靠谱的智能干冰清洗设备行业内口碑厂家排行榜
  • 2025年11月门窗密封胶条十大品牌权威榜单:筑牢家居与建筑的 “节能防线”
  • 2025年知名的磁吸式反弹器厂家选购指南与推荐
  • 2025年河北推拿按摩中医学校权威推荐榜单:足疗按摩/按摩/推拿正骨培训学校精选
  • 本土开发者如何选择代码托管平台?Gitee与海外平台的差异化竞争分析
  • 2025年高品质的木质建筑模板厂家最新推荐排行榜
  • 【JUnit实战3_11】第六章:关于测试的质量(下) - 详解
  • 2025年热门的三维调节缓冲托底轨厂家推荐及选购参考榜
  • 2025年组织研磨器直销厂家权威推荐榜单:三维电磁振动筛分仪/电路板研磨机/冷冻研磨仪源头厂家精选
  • 虚假新闻检测——赵
  • linux date 日期
  • 2025年口碑好的成都全品类五金厂家实力及用户口碑排行榜
  • 2025年口碑好的蛇形帘系统配件厂家最新TOP排行榜
  • 2025年比较好的小型平板硫化机行业内口碑厂家排行榜
  • JSAPIThree 地图视野控制学习笔记:让地图动起来
  • 2025 最新推荐!香港保健品源头厂家权威榜单:原料仓储常备 + 产能稳定,国际认证达标企业实力解析优质香港保健品/天然香港保健品/可靠香港保健品/易吸收香港保健品公司推荐
  • 2025年口碑好的冰雕雪雕厂家推荐及选择参考
  • Solon AI 开发学习 - 2chat - Hello World
  • 2025年靠谱的电压互感器品牌厂家排行榜
  • libcurl FTP路径规范化漏洞解析:编码%2e%2e导致目录穿越
  • 2025 最新推荐修脚加盟品牌榜单:国际协会测评认证,非遗技艺 + 成熟运营体系优选指南修脚加盟培训 / 足疗修脚加盟 / 采耳修脚加盟 / 修脚培训加盟公司推荐
  • 2025年BIP系统口碑排行揭晓,黑马系统强势登顶!好生意/用友 T3/易代账/协同云/税务云/好业财/制造云BIP服务商推荐排行榜单
  • 2025年杭州汽车美容服务权威推荐榜单:汽车保护膜/汽车改色/高端汽车贴膜服务精选
  • 2025年体育科技与运动表现分析国际学术会议(ICSTPA 2025)
  • 2025年热门的烟台包装用户口碑最好的厂家榜
  • 算一算你的一餐,为地球“减负”多少?
  • 基于Simulink实现卡尔曼滤波