aboutsummaryrefslogtreecommitdiff
path: root/fs/proc/cmdline.c
diff options
context:
space:
mode:
authorSultanxda <sultanxda@gmail.com>2016-10-21 01:37:16 -0700
committerMoyster <oysterized@gmail.com>2016-11-07 13:47:02 +0100
commit81cd48af4ce91983fa556039f52bdede850c4e52 (patch)
tree61d7dd9cf2b51f6933c87e84fb424d6ad32f21de /fs/proc/cmdline.c
parent2a60946baf60a6af40e498ed9d4fbec177dc8ac7 (diff)
proc: Remove verifiedbootstate flag from /proc/cmdline
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> Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
Diffstat (limited to 'fs/proc/cmdline.c')
-rw-r--r--fs/proc/cmdline.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/fs/proc/cmdline.c b/fs/proc/cmdline.c
index 82676e3fc..d72ac6d03 100644
--- a/fs/proc/cmdline.c
+++ b/fs/proc/cmdline.c
@@ -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;
}
@@ -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;
}