Skip to content

Commit dbddcf1

Browse files
committed
Merge 'dev' branch into stable
2 parents 1ed04d6 + f903624 commit dbddcf1

File tree

6 files changed

+78
-52
lines changed

6 files changed

+78
-52
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ ghidra/flex/
88
.ccls-cache
99
.gdb_history
1010
.cache/
11+
.DS_Store

src/CodeXMLParse.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ struct ParseCodeXMLContext
4848
static char *strdup_rz(const char *s)
4949
{
5050
size_t sz = strlen(s);
51-
char *r = reinterpret_cast<char *>(rz_malloc(sz + 1));
51+
char *r = reinterpret_cast<char *>(rz_mem_alloc(sz + 1));
5252
if(!r)
5353
return NULL;
5454
memcpy(r, s, sz + 1);
@@ -350,7 +350,7 @@ RZ_API RzAnnotatedCode *ParseCodeXML(Funcdata *func, const char *xml)
350350
ParseNode(doc.child("function"), &ctx, ss, code);
351351

352352
std::string str = ss.str();
353-
code->code = reinterpret_cast<char *>(rz_malloc(str.length() + 1));
353+
code->code = reinterpret_cast<char *>(rz_mem_alloc(str.length() + 1));
354354
if(!code->code)
355355
{
356356
rz_annotated_code_free(code);

src/RizinScope.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ FunctionSymbol *RizinScope::registerFunction(RzAnalysisFunction *fcn) const
122122
auto flag = reinterpret_cast<RzFlagItem *>(pos);
123123
if(flag->space && flag->space->name && !strcmp(flag->space->name, RZ_FLAGS_FS_SECTIONS))
124124
continue;
125-
if (flag->realname && *flag->realname) {
125+
if(!strcmp(flag->name, fcn->name) && flag->realname && *flag->realname)
126+
{
126127
fcn_name = flag->realname;
127128
break;
128129
}

src/analysis_ghidra.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -2937,9 +2937,7 @@ static bool esil_peek_n(RzAnalysisEsil *esil, int bits)
29372937
ut64 bitmask = genmask(bits - 1);
29382938
ut8 a[sizeof(ut64)] = {0};
29392939
ret = !!rz_analysis_esil_mem_read(esil, addr, a, bytes);
2940-
ut64 b = rz_read_ble64(a, 0); // esil->analysis->big_endian);
2941-
if(esil->analysis->big_endian)
2942-
rz_mem_swapendian((ut8 *)&b, (const ut8 *)&b, bytes);
2940+
ut64 b = rz_read_ble64(a, esil->analysis->big_endian);
29432941

29442942
snprintf(res, sizeof(res), "0x%" PFMT64x, b & bitmask);
29452943
rz_analysis_esil_push(esil, res);

test/db/extras/analysis_ghidra

+23-23
Original file line numberDiff line numberDiff line change
@@ -83,91 +83,91 @@ e asm.bits
8383
wx 89e1
8484
pdq 1
8585
ao | grep type
86-
?e ----
86+
echo ----
8787
wx a168a00408
8888
pdq 1
8989
ao | grep type
90-
?e ----
90+
echo ----
9191
wx a368a00408
9292
pdq 1
9393
ao | grep type
94-
?e ----
94+
echo ----
9595
wx 8945f0
9696
pdq 1
9797
ao | grep type
98-
?e ----
98+
echo ----
9999
wx 8b4510
100100
pdq 1
101101
ao | grep type
102-
?e ----
102+
echo ----
103103
wx 0f4c0d03000000
104104
pdq 1
105105
ao | grep type
106-
?e ----
106+
echo ----
107107
wx cd80
108108
pdq 1
109109
ao | grep type
110-
?e ----
110+
echo ----
111111
wx 55
112112
pdq 1
113113
ao | grep type
114-
?e ----
114+
echo ----
115115
wx 6a00
116116
pdq 1
117117
ao | grep type
118-
?e ----
118+
echo ----
119119
wx 5d
120120
pdq 1
121121
ao | grep type
122-
?e ----
122+
echo ----
123123
wx 83f853
124124
pdq 1
125125
ao | grep type
126-
?e ----
126+
echo ----
127127
wx 85c0
128128
pdq 1
129129
ao | grep type
130-
?e ----
130+
echo ----
131131
wx 83c410
132132
pdq 1
133133
ao | grep type
134-
?e ----
134+
echo ----
135135
wx 81ec88100000
136136
pdq 1
137137
ao | grep type
138-
?e ----
138+
echo ----
139139
wx f7ea
140140
pdq 1
141141
ao | grep type
142-
?e ----
142+
echo ----
143143
wx f7f2
144144
pdq 1
145145
ao | grep type
146-
?e ----
146+
echo ----
147147
wx d1e8
148148
pdq 1
149149
ao | grep type
150-
?e ----
150+
echo ----
151151
wx d1e0
152152
pdq 1
153153
ao | grep type
154-
?e ----
154+
echo ----
155155
wx d1f8
156156
pdq 1
157157
ao | grep type
158-
?e ----
158+
echo ----
159159
wx 0b25f0ff0000
160160
pdq 1
161161
ao | grep type
162-
?e ----
162+
echo ----
163163
wx 2325f0ff0000
164164
pdq 1
165165
ao | grep type
166-
?e ----
166+
echo ----
167167
wx 3325f0ff0000
168168
pdq 1
169169
ao | grep type
170-
?e ----
170+
echo ----
171171
wx 8703
172172
pdq 1
173173
ao | grep type
@@ -189,7 +189,7 @@ e asm.arch=ghidra
189189
wx 298947f9
190190
pdq 1
191191
ao | grep type
192-
?e ----
192+
echo ----
193193
wx 690200f9 @ 0x200
194194
pdq 1 @ 0x200
195195
ao @ 0x200| grep type

test/db/extras/ghidra

+49-23
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ s sym.get_global_array_entry
247247
af
248248
e ghidra.rawptr=1
249249
pdg
250-
?e --
250+
echo --
251251
e ghidra.rawptr=0
252252
pdg
253253
EOF
@@ -275,7 +275,7 @@ s sym.get_global_var
275275
af
276276
e ghidra.rawptr=1
277277
pdg
278-
?e --
278+
echo --
279279
e ghidra.rawptr=0
280280
pdg
281281
EOF
@@ -309,21 +309,21 @@ uint32_t sym.get_global_array_entry(void)
309309
}
310310
EOF
311311
CMDS=<<EOF
312-
avga global_var obj.global_var uint32_t
313-
avga global_array obj.global_array uint32_t[2]
312+
avga global_var uint32_t @ obj.global_var
313+
avga global_array uint32_t[2] @ obj.global_array
314314
s sym.get_global_var
315315
af
316316
e ghidra.rawptr=1
317317
pdg
318-
?e --
318+
echo --
319319
e ghidra.rawptr=0
320320
pdg
321-
?e --
321+
echo --
322322
s sym.get_global_array_entry
323323
af
324324
e ghidra.rawptr=1
325325
pdg
326-
?e --
326+
echo --
327327
e ghidra.rawptr=0
328328
pdg
329329
EOF
@@ -2277,12 +2277,12 @@ afvs 4 bright BrightPtr
22772277
afvs 8 argc "Bright *"
22782278
afvs 12 argv "const char **"
22792279
pdg
2280-
?e --
2280+
echo --
22812281
afvs 4 bright "BrightTypedefd *"
22822282
afvs 8 argc int32_t
22832283
afvs 12 argv "const char **"
22842284
pdg
2285-
?e --
2285+
echo --
22862286
afvs 4 bright BrightTypedefdPtr
22872287
pdg
22882288
EOF
@@ -2740,18 +2740,18 @@ s main
27402740
af
27412741
e scr.color=0
27422742
pdg
2743-
?e --
2743+
echo --
27442744
pdgo
2745-
?e --
2745+
echo --
27462746
pdg*
2747-
?e --
2747+
echo --
27482748
pdgx~!id=,<addr
2749-
?e --
2749+
echo --
27502750
pdgd~!id=,protectedMode
2751-
?e --
2751+
echo --
27522752
e scr.color=3
27532753
pdg
2754-
?e --
2754+
echo --
27552755
pdgo
27562756
EOF
27572757
RUN
@@ -3076,7 +3076,7 @@ EOF
30763076
CMDS=<<EOF
30773077
s main
30783078
pi 8
3079-
?e -----
3079+
echo -----
30803080
pdgsd 8~!STORE
30813081
EOF
30823082
RUN
@@ -3232,9 +3232,6 @@ jstring sym.Java_JNIFoo_nativeFoo(JNIEnv *env, jobject obj)
32323232
int64_t iVar1;
32333233
jstring pvVar2;
32343234
int64_t var_30h;
3235-
void *var_18h;
3236-
void *ptr;
3237-
int64_t var_8h;
32383235

32393236
iVar1 = sym.imp.malloc(0x1e);
32403237
if (iVar1 == 0) {
@@ -3254,10 +3251,10 @@ FILE=rizin-testbins/mach0/hello-macos-arm64
32543251
CMDS=<<EOF
32553252
aaa
32563253
s main
3257-
?e ------------ with propagation
3254+
echo ------------ with propagation
32583255
e ghidra.ropropagate
32593256
pdg
3260-
?e ------------ without propagation
3257+
echo ------------ without propagation
32613258
e ghidra.ropropagate=0
32623259
pdg
32633260
EOF
@@ -3267,8 +3264,8 @@ true
32673264

32683265
// WARNING: Variable defined which should be unmapped: var_10h
32693266
// WARNING: Variable defined which should be unmapped: var_8h
3270-
// WARNING: [rz-ghidra] Detected overlap for variable var_2ch
32713267
// WARNING: [rz-ghidra] Detected overlap for variable var_14h
3268+
// WARNING: [rz-ghidra] Detected overlap for variable var_2ch
32723269

32733270
undefined8 entry0(int64_t arg1, int64_t arg2)
32743271
{
@@ -3300,8 +3297,8 @@ undefined8 entry0(int64_t arg1, int64_t arg2)
33003297

33013298
// WARNING: Variable defined which should be unmapped: var_10h
33023299
// WARNING: Variable defined which should be unmapped: var_8h
3303-
// WARNING: [rz-ghidra] Detected overlap for variable var_2ch
33043300
// WARNING: [rz-ghidra] Detected overlap for variable var_14h
3301+
// WARNING: [rz-ghidra] Detected overlap for variable var_2ch
33053302

33063303
undefined8 entry0(int64_t arg1, int64_t arg2)
33073304
{
@@ -3350,3 +3347,32 @@ undefined4 sym.ko_example_init(void)
33503347
}
33513348
EOF
33523349
RUN
3350+
3351+
NAME=realname and multiple flags at function
3352+
FILE=rizin-testbins/mach0/hello-macos-arm64-objc-stubs-stripped
3353+
CMDS=<<EOF
3354+
e asm.flags.real=1
3355+
aaa
3356+
pdg @ 0x100003ae8
3357+
EOF
3358+
EXPECT=<<EOF
3359+
3360+
// WARNING: Variable defined which should be unmapped: var_10h
3361+
// WARNING: [rz-ghidra] Detected overlap for variable var_2ch
3362+
3363+
void method.Test.methodWithTwoArgs:secondArg:(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4)
3364+
{
3365+
int32_t var_2ch;
3366+
int64_t var_28h;
3367+
int64_t var_10h;
3368+
3369+
var_2ch = (int32_t)arg4;
3370+
if (var_2ch < (int32_t)arg3) {
3371+
var_2ch = (int32_t)arg3;
3372+
}
3373+
*(int32_t *)(arg1 + 8) = var_2ch;
3374+
NSLog(__CFConstantStringClassReference);
3375+
return;
3376+
}
3377+
EOF
3378+
RUN

0 commit comments

Comments
 (0)