Skip to content

Commit 6beda85

Browse files
committed
ssearch lower upper search
1 parent c019346 commit 6beda85

File tree

1 file changed

+55
-13
lines changed

1 file changed

+55
-13
lines changed

source/main.c

Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -224,37 +224,58 @@ int argmain(int argc, char **argv)
224224

225225
if (!strcmp(argv[0], "ssearch"))
226226
{
227-
if (argc != 3)
227+
if (argc != 3 || argc != 4)
228228
goto help;
229229

230-
u8 u8query = 0;
231-
u16 u16query = 0;
232-
u32 u32query = 0;
233-
u64 u64query = 0;
230+
u8 u8LowQuery = 0;
231+
u16 u16LowQuery = 0;
232+
u32 u32LowQuery = 0;
233+
u64 u64LowQuery = 0;
234+
235+
u8 u8UppQuery = 0;
236+
u16 u16UppQuery = 0;
237+
u32 u32UppQuery = 0;
238+
u64 u64UppQuery = 0;
234239

235240
if (!strcmp(argv[1], "u8"))
236241
{
237242
search = VAL_U8;
238-
u8query = strtoul(argv[2], NULL, 10);
243+
u8LowQuery = strtoul(argv[2], NULL, 10);
239244
}
240245
else if (!strcmp(argv[1], "u16"))
241246
{
242247
search = VAL_U16;
243-
u16query = strtoul(argv[2], NULL, 10);
248+
u16LowQuery = strtoul(argv[2], NULL, 10);
244249
}
245250
else if (!strcmp(argv[1], "u32"))
246251
{
247252
search = VAL_U32;
248-
u32query = strtoul(argv[2], NULL, 10);
253+
u32LowQuery = strtoul(argv[2], NULL, 10);
249254
}
250255
else if (!strcmp(argv[1], "u64"))
251256
{
252257
search = VAL_U64;
253-
u64query = strtoull(argv[2], NULL, 10);
258+
u64LowQuery = strtoull(argv[2], NULL, 10);
254259
}
255260
else
256261
goto help;
257262

263+
if (argc == 4) {
264+
if (search == VAL_U8)
265+
{
266+
u8UppQuery = strtoul(argv[3], NULL, 10);
267+
} else if (search == VAL_U16)
268+
{
269+
u16UppQuery = strtoul(argv[3], NULL, 10);
270+
} else if (search == VAL_U32)
271+
{
272+
u32UppQuery = strtoul(argv[3], NULL, 10);
273+
} else if (search == VAL_U64)
274+
{
275+
u64UppQuery = strtoull(argv[3], NULL, 10);
276+
}
277+
}
278+
258279
MemoryInfo meminfo;
259280
memset(&meminfo, 0, sizeof(MemoryInfo));
260281

@@ -286,7 +307,12 @@ int argmain(int argc, char **argv)
286307
u8 *u8buf = (u8 *)outbuf;
287308
for (u64 i = 0; i < chunksize / sizeof(u8); i++)
288309
{
289-
if (u8buf[i] == u8query && searchSize < SEARCH_ARR_SIZE)
310+
if (searchSize >= SEARCH_ARR_SIZE)
311+
{
312+
break;
313+
}
314+
315+
if (u8buf[i] == u8LowQuery || (argc == 4 && (u8buf[i] >= u8LowQuery && u8buf[i] <= u8UppQuery)))
290316
{
291317
printf("Got a hit at %lx!\r\n", curaddr + i * sizeof(u8));
292318
searchArr[searchSize++] = curaddr + i * sizeof(u8);
@@ -299,7 +325,12 @@ int argmain(int argc, char **argv)
299325
u16 *u16buf = (u16 *)outbuf;
300326
for (u64 i = 0; i < chunksize / sizeof(u16); i++)
301327
{
302-
if (u16buf[i] == u16query && searchSize < SEARCH_ARR_SIZE)
328+
if (searchSize >= SEARCH_ARR_SIZE)
329+
{
330+
break;
331+
}
332+
333+
if (u16buf[i] == u16LowQuery || (argc == 4 && (u16buf[i] >= u16LowQuery && u16buf[i] <= u16UppQuery)))
303334
{
304335
printf("Got a hit at %lx!\r\n", curaddr + i * sizeof(u16));
305336
searchArr[searchSize++] = curaddr + i * sizeof(u16);
@@ -312,7 +343,12 @@ int argmain(int argc, char **argv)
312343
u32 *u32buf = (u32 *)outbuf;
313344
for (u64 i = 0; i < chunksize / sizeof(u32); i++)
314345
{
315-
if (u32buf[i] == u32query && searchSize < SEARCH_ARR_SIZE)
346+
if (searchSize >= SEARCH_ARR_SIZE)
347+
{
348+
break;
349+
}
350+
351+
if (u32buf[i] == u32LowQuery || (argc == 4 && (u32buf[i] >= u32LowQuery && u32buf[i] <= u32UppQuery)))
316352
{
317353
printf("Got a hit at %lx!\r\n", curaddr + i * sizeof(u32));
318354
searchArr[searchSize++] = curaddr + i * sizeof(u32);
@@ -325,7 +361,12 @@ int argmain(int argc, char **argv)
325361
u64 *u64buf = (u64 *)outbuf;
326362
for (u64 i = 0; i < chunksize / sizeof(u64); i++)
327363
{
328-
if (u64buf[i] == u64query && searchSize < SEARCH_ARR_SIZE)
364+
if (searchSize >= SEARCH_ARR_SIZE)
365+
{
366+
break;
367+
}
368+
369+
if (u64buf[i] == u64LowQuery || (argc == 4 && (u64buf[i] >= u64LowQuery && u64buf[i] <= u64UppQuery)))
329370
{
330371
printf("Got a hit at %lx!\r\n", curaddr + i * sizeof(u64));
331372
searchArr[searchSize++] = curaddr + i * sizeof(u32);
@@ -350,6 +391,7 @@ int argmain(int argc, char **argv)
350391
{
351392
if (argc != 2)
352393
goto help;
394+
353395
if (search == VAL_NONE)
354396
{
355397
printf("You need to start a search first!");

0 commit comments

Comments
 (0)