From 1dac8c7a01e2bdd35cb04eb4901ddb157291ac2d Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 3 Jan 2023 12:34:55 +0100 Subject: executor: better prevent the panic on ext4 errors (#3604) We already suppress them, but the current approach fails if syzkaller slightly corrupts the options string. Do the check more rigorously. --- pkg/csource/generated.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'pkg/csource') diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go index 8c8fa8d22..955d7c971 100644 --- a/pkg/csource/generated.go +++ b/pkg/csource/generated.go @@ -6799,7 +6799,14 @@ static long syz_mount_image( if (strcmp(fs, "iso9660") == 0) { flags |= MS_RDONLY; } else if (strncmp(fs, "ext", 3) == 0) { - if (strstr(opts, "errors=panic") || strstr(opts, "errors=remount-ro") == 0) + bool has_remount_ro = false; + char* remount_ro_start = strstr(opts, "errors=remount-ro"); + if (remount_ro_start != NULL) { + char after = *(remount_ro_start + strlen("errors=remount-ro")); + char before = remount_ro_start == opts ? '\0' : *(remount_ro_start - 1); + has_remount_ro = ((before == '\0' || before == ',') && (after == '\0' || after == ',')); + } + if (strstr(opts, "errors=panic") || !has_remount_ro) strcat(opts, ",errors=continue"); } else if (strcmp(fs, "xfs") == 0) { strcat(opts, ",nouuid"); -- cgit mrf-deployment