mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-12-03 08:01:53 +00:00
Prevent setting zero over than bound
The &cmd will return a pointer which point to a pointer of cmdline.
It is a memory address which is usually 8 bytes in 64 bits machine.
However, the struct cmdline is 4 bytes. This will cause setting zero
beyond the bound.
Below is a simple example to show the differentiation:
struct cmdline {
char skip_initramfs;
char slot[3];
};
static void parse_cmdline(struct cmdline *cmd)
{
printf("%lu\n", sizeof(*cmd)); /* 4 */
printf("%lu\n", sizeof(&cmd)); /* 8 */
}
int main()
{
struct cmdline cmd;
parse_cmdline(&cmd);
return 0;
}
This patch prevents this.
Signed-off-by: npes87184 <npes87184@gmail.com>
This commit is contained in:
@@ -75,7 +75,7 @@ struct device {
|
|||||||
|
|
||||||
static void parse_cmdline(struct cmdline *cmd) {
|
static void parse_cmdline(struct cmdline *cmd) {
|
||||||
// cleanup
|
// cleanup
|
||||||
memset(cmd, 0, sizeof(&cmd));
|
memset(cmd, 0, sizeof(*cmd));
|
||||||
|
|
||||||
char cmdline[4096];
|
char cmdline[4096];
|
||||||
mkdir("/proc", 0555);
|
mkdir("/proc", 0555);
|
||||||
|
|||||||
Reference in New Issue
Block a user