-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Expand file tree
/
Copy pathinspect_utils.h
More file actions
63 lines (48 loc) · 1.78 KB
/
inspect_utils.h
File metadata and controls
63 lines (48 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
* Copyright 2022 Google LLC
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* A detector that uses ptrace to identify DNS arbitrary resolutions. */
/* POSIX */
#include <unistd.h>
#include <string>
#include <vector>
#define DEBUG_LOGS 0
#if DEBUG_LOGS
#define debug_log(...) \
do { \
fprintf(stderr, __VA_ARGS__); \
fflush(stdout); \
fputc('\n', stderr); \
} while (0)
#else
#define debug_log(...)
#endif
#define fatal_log(...) \
do { \
fprintf(stderr, __VA_ARGS__); \
fputc('\n', stderr); \
exit(EXIT_FAILURE); \
} while (0)
// Structure to know which thread id triggered the bug.
struct ThreadParent {
// Parent thread ID, ie creator.
pid_t parent_tid;
// Current thread ID ran exec to become another process.
bool ran_exec = false;
ThreadParent() : parent_tid(0) {}
ThreadParent(pid_t tid) : parent_tid(tid) {}
};
std::vector<std::byte> read_memory(pid_t pid, unsigned long long address,
size_t size);
std::vector<std::string> read_argv(pid_t pid, unsigned long long address);
std::string read_null_terminated(pid_t pid, unsigned long long address);
void report_bug(std::string bug_type, pid_t tid);