Skip to content

Commit

Permalink
proc: Remove verifiedbootstate flag from /proc/cmdline
Browse files Browse the repository at this point in the history
Userspace parses this and sets the ro.boot.verifiedbootstate prop
according to the value that this flag has. When ro.boot.verifiedbootstate
is not 'green', SafetyNet is tripped and fails the CTS test.

Hide verifiedbootstate from /proc/cmdline in order to fix the failed
SafetyNet CTS check.

Signed-off-by: Sultanxda <sultanxda@gmail.com>
  • Loading branch information
kerneltoast authored and darkeyes84 committed Jan 18, 2017
1 parent b802f03 commit edcf9b4
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion fs/proc/cmdline.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <asm/setup.h>

static char new_command_line[COMMAND_LINE_SIZE];

static int cmdline_proc_show(struct seq_file *m, void *v)
{
seq_printf(m, "%s\n", saved_command_line);
seq_printf(m, "%s\n", new_command_line);
return 0;
}

Expand All @@ -23,6 +26,29 @@ static const struct file_operations cmdline_proc_fops = {

static int __init proc_cmdline_init(void)
{
char *offset_addr, *cmd = new_command_line;

strcpy(cmd, saved_command_line);

/*
* Remove 'androidboot.verifiedbootstate' flag from command line seen
* by userspace in order to pass SafetyNet CTS check.
*/
offset_addr = strstr(cmd, "androidboot.verifiedbootstate=");
if (offset_addr) {
size_t i, len, offset;

len = strlen(cmd);
offset = offset_addr - cmd;

for (i = 1; i < (len - offset); i++) {
if (cmd[offset + i] == ' ')
break;
}

memmove(offset_addr, &cmd[offset + i + 1], len - i - offset);
}

proc_create("cmdline", 0, NULL, &cmdline_proc_fops);
return 0;
}
Expand Down

0 comments on commit edcf9b4

Please sign in to comment.