mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-01-12 00:03:44 +00:00
Use memmem instead of strstr
It might not be null terminated
This commit is contained in:
parent
ae23ae2d37
commit
48df6b8485
@ -1,15 +1,13 @@
|
|||||||
#include <bitset>
|
#include <bitset>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <libfdt.h>
|
||||||
|
|
||||||
#include <utils.hpp>
|
#include <utils.hpp>
|
||||||
|
|
||||||
#include "magiskboot.hpp"
|
#include "magiskboot.hpp"
|
||||||
#include "dtb.hpp"
|
#include "dtb.hpp"
|
||||||
#include "format.hpp"
|
#include "format.hpp"
|
||||||
extern "C" {
|
|
||||||
#include <libfdt.h>
|
|
||||||
}
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -147,14 +145,14 @@ static bool dtb_patch(const char *file) {
|
|||||||
if (fdt_get_name(fdt, node, nullptr) != "chosen"sv)
|
if (fdt_get_name(fdt, node, nullptr) != "chosen"sv)
|
||||||
continue;
|
continue;
|
||||||
int len;
|
int len;
|
||||||
if (char *value = (char *) fdt_getprop(fdt, node, "bootargs", &len)) {
|
if (auto value = fdt_getprop(fdt, node, "bootargs", &len)) {
|
||||||
if (char *skip = strstr(value, "skip_initramfs")) {
|
if (void *skip = memmem(value, len, "skip_initramfs", 14)) {
|
||||||
fprintf(stderr, "Patch [skip_initramfs] -> [want_initramfs]\n");
|
fprintf(stderr, "Patch [skip_initramfs] -> [want_initramfs]\n");
|
||||||
// Don't use strcpy, we do NOT want it null terminated
|
|
||||||
memcpy(skip, "want", 4);
|
memcpy(skip, "want", 4);
|
||||||
patched = true;
|
patched = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (int fstab = find_fstab(fdt); fstab >= 0) {
|
if (int fstab = find_fstab(fdt); fstab >= 0) {
|
||||||
fdt_for_each_subnode(node, fdt, fstab) {
|
fdt_for_each_subnode(node, fdt, fstab) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user