📄 denytest.c
字号:
/* Unix SMB/CIFS implementation. SMB torture tester - deny mode scanning functions Copyright (C) Andrew Tridgell 2001 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.*/#include "includes.h"#include "torture/torture.h"#include "system/filesys.h"#include "libcli/raw/libcliraw.h"#include "libcli/libcli.h"#include "torture/util.h"extern int torture_failures;#define CHECK_MAX_FAILURES(label) do { if (++failures >= torture_failures) goto label; } while (0)enum deny_result {A_0=0, A_X=1, A_R=2, A_W=3, A_RW=5};static const char *denystr(int denymode){ const struct { int v; const char *name; } deny_modes[] = { {DENY_DOS, "DENY_DOS"}, {DENY_ALL, "DENY_ALL"}, {DENY_WRITE, "DENY_WRITE"}, {DENY_READ, "DENY_READ"}, {DENY_NONE, "DENY_NONE"}, {DENY_FCB, "DENY_FCB"}, {-1, NULL}}; int i; for (i=0;deny_modes[i].name;i++) { if (deny_modes[i].v == denymode) return deny_modes[i].name; } return "DENY_XXX";}static const char *openstr(int mode){ const struct { int v; const char *name; } open_modes[] = { {O_RDWR, "O_RDWR"}, {O_RDONLY, "O_RDONLY"}, {O_WRONLY, "O_WRONLY"}, {-1, NULL}}; int i; for (i=0;open_modes[i].name;i++) { if (open_modes[i].v == mode) return open_modes[i].name; } return "O_XXX";}static const char *resultstr(enum deny_result res){ const struct { enum deny_result res; const char *name; } results[] = { {A_X, "X"}, {A_0, "-"}, {A_R, "R"}, {A_W, "W"}, {A_RW,"RW"}}; int i; for (i=0;ARRAY_SIZE(results);i++) { if (results[i].res == res) return results[i].name; } return "*";}static const struct { int isexe; int mode1, deny1; int mode2, deny2; enum deny_result result;} denytable2[] = {{1, O_RDWR, DENY_DOS, O_RDWR, DENY_DOS, A_RW},{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_DOS, A_R},{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_DOS, A_W},{1, O_RDWR, DENY_DOS, O_RDWR, DENY_ALL, A_0},{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_ALL, A_0},{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_ALL, A_0},{1, O_RDWR, DENY_DOS, O_RDWR, DENY_WRITE, A_0},{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},{1, O_RDWR, DENY_DOS, O_RDWR, DENY_READ, A_0},{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_READ, A_0},{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_READ, A_0},{1, O_RDWR, DENY_DOS, O_RDWR, DENY_NONE, A_RW},{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_NONE, A_R},{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_NONE, A_W},{1, O_RDWR, DENY_DOS, O_RDWR, DENY_FCB, A_0},{1, O_RDWR, DENY_DOS, O_RDONLY, DENY_FCB, A_0},{1, O_RDWR, DENY_DOS, O_WRONLY, DENY_FCB, A_0},{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_RW},{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_R},{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_W},{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_READ, A_0},{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_READ, A_0},{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_READ, A_0},{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},{1, O_RDONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},{1, O_RDONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},{1, O_RDONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_DOS, A_RW},{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_DOS, A_R},{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_DOS, A_W},{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_ALL, A_0},{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_ALL, A_0},{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_ALL, A_0},{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_WRITE, A_0},{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_WRITE, A_0},{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_WRITE, A_0},{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_READ, A_RW},{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_READ, A_R},{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_READ, A_W},{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_NONE, A_RW},{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_NONE, A_R},{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_NONE, A_W},{1, O_WRONLY, DENY_DOS, O_RDWR, DENY_FCB, A_0},{1, O_WRONLY, DENY_DOS, O_RDONLY, DENY_FCB, A_0},{1, O_WRONLY, DENY_DOS, O_WRONLY, DENY_FCB, A_0},{1, O_RDWR, DENY_ALL, O_RDWR, DENY_DOS, A_0},{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_DOS, A_0},{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_DOS, A_0},{1, O_RDWR, DENY_ALL, O_RDWR, DENY_ALL, A_0},{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_ALL, A_0},{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_ALL, A_0},{1, O_RDWR, DENY_ALL, O_RDWR, DENY_WRITE, A_0},{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},{1, O_RDWR, DENY_ALL, O_RDWR, DENY_READ, A_0},{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_READ, A_0},{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_READ, A_0},{1, O_RDWR, DENY_ALL, O_RDWR, DENY_NONE, A_0},{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_NONE, A_0},{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_NONE, A_0},{1, O_RDWR, DENY_ALL, O_RDWR, DENY_FCB, A_0},{1, O_RDWR, DENY_ALL, O_RDONLY, DENY_FCB, A_0},{1, O_RDWR, DENY_ALL, O_WRONLY, DENY_FCB, A_0},{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},{1, O_RDONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},{1, O_RDONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},{1, O_RDONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_DOS, A_0},{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_DOS, A_0},{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_DOS, A_0},{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_ALL, A_0},{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_ALL, A_0},{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_ALL, A_0},{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_WRITE, A_0},{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_WRITE, A_0},{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_WRITE, A_0},{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_READ, A_0},{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_READ, A_0},{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_READ, A_0},{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_NONE, A_0},{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_NONE, A_0},{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_NONE, A_0},{1, O_WRONLY, DENY_ALL, O_RDWR, DENY_FCB, A_0},{1, O_WRONLY, DENY_ALL, O_RDONLY, DENY_FCB, A_0},{1, O_WRONLY, DENY_ALL, O_WRONLY, DENY_FCB, A_0},{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_DOS, A_0},{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_ALL, A_0},{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_WRITE, A_0},{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_READ, A_0},{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_READ, A_0},{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_READ, A_0},{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_NONE, A_0},{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_NONE, A_R},{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_NONE, A_0},{1, O_RDWR, DENY_WRITE, O_RDWR, DENY_FCB, A_0},{1, O_RDWR, DENY_WRITE, O_RDONLY, DENY_FCB, A_0},{1, O_RDWR, DENY_WRITE, O_WRONLY, DENY_FCB, A_0},{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_DOS, A_0},{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_DOS, A_R},{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_DOS, A_0},{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_ALL, A_0},{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_ALL, A_0},{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_ALL, A_0},{1, O_RDONLY, DENY_WRITE, O_RDWR, DENY_WRITE, A_0},{1, O_RDONLY, DENY_WRITE, O_RDONLY, DENY_WRITE, A_R},{1, O_RDONLY, DENY_WRITE, O_WRONLY, DENY_WRITE, A_0},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -