static -pthread ./exploit.c -o ./exploit ./exploit.c: In function ‘spray_simple_xattr’: ./exploit.c:142:9: warning: implicit declaration of function ‘mkdir’ [-Wimplicit-function-declaration] 142 | if (mkdir("/tmp/tmpfs", S_IRWXU) == -1 && errno != EEXIST) | ^~~~~ ./exploit.c: In function ‘print_hex’: ./exploit.c:243:23: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 2 has type ‘size_t’ {aka ‘long unsigned int’} [-Wformat=] 243 | printf(" %16llx",*(size_t * )(buf + i*8)); | ~~~~~^ ~~~~~~~~~~~~~~~~~~~~~~~ | | | | | size_t {aka long unsigned int} | long long unsigned int | %16lx ./exploit.c: In function ‘get_root_shell’: ./exploit.c:354:3: warning: null argument where non-null required (argument 2) [-Wnonnull] 354 | execve("/tmp/dummy", NULL, NULL); | ^~~~~~
时间: 2024-02-14 19:36:13 浏览: 153
根据您的问题描述,这似乎是一个编译警告信息,并不影响代码的运行。其中包括:
1. `implicit declaration of function ‘mkdir’` 表示您的代码中使用了mkdir函数,但是编译器没有找到该函数的声明,需要添加头文件`#include <sys/stat.h>`。
2. `format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 2 has type ‘size_t’` 表示在打印输出时使用了错误的格式标识符。应该将`%llx`改为`%lx`。
3. `null argument where non-null required (argument 2)` 表示您在`execve()`函数中使用了NULL参数,但该参数不能为NULL。您需要将第二个和第三个参数设置为合适的值。
请您检查一下代码并进行相应的修改,以消除这些警告信息。
相关问题
./nptl/pthread_mutex_lock.c:81:_pthread_mutex_lock: Assertionmutex->__data.__owner == 0 failed
./nptl/pthread_mutex_lock.c:81:_pthread_mutex_lock: Assertion mutex->__data.__owner == 0 failed是一个断言错误。这个错误表示在调用pthread_mutex_lock函数时,mutex锁已经被其他线程拥有。根据引用中的描述,pthread_mutex_lock函数首先在用户态进行CAS操作判断是否可以获取锁,如果锁已经被其他线程获取,则会进行系统调用将当前线程挂起。在你的运行结果中,这个错误发生在p5线程调用pthread_mutex_lock函数时,p5线程尝试获取一个已经被其他线程拥有的mutex锁,导致断言失败。这个问题可以通过确保在调用pthread_mutex_lock函数之前,没有其他线程已经获取了该锁来解决。
[xtrader@m6ifxnobvqrgxzxz bu]$ // g++ -O2 --std=c++11 ../LoggerTest.cpp ../Logger.cpp -o test -lspdlog -pthread -I/home/xtrader/ QuantFabric/XAPI/SPDLog/1.8.5/include -L/home/xtrader/QuantFabric/XAPI/SPDLog/1.8.5/lib/ -bash: //: Is a directory 为什么报错
该错误提示表明您输入的命令以斜杠(//)开头,而在终端中以斜杠开头的是注释。因此,终端将其视为注释而不是命令,并且会显示"//: Is a directory"错误。
请确保您输入的命令正确,并且没有多余的注释符号。如果您想运行该命令,请去除开头的注释符号(//)并再次尝试。应该像这样:
```shell
g++ -O2 --std=c++11 ../LoggerTest.cpp ../Logger.cpp -o test -lspdlog -pthread -I/home/xtrader/QuantFabric/XAPI/SPDLog/1.8.5/include -L/home/xtrader/QuantFabric/XAPI/SPDLog/1.8.5/lib/
```
这样应该就可以正确执行编译过程了。
阅读全文