| // Copyright 2016 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <zircon/syscalls-ddk.h> |
| #include <zircon/syscalls.h> |
| |
| static int val = 5; |
| |
| void bad_kernel_access_read(void) { |
| char cmd[50]; |
| snprintf(cmd, sizeof(cmd), "db %p 1", &val); |
| zx_debug_send_command(cmd, strlen(cmd)); |
| } |
| |
| void bad_kernel_access_write(void) { |
| char cmd[50]; |
| snprintf(cmd, sizeof(cmd), "mb %p 1 1", &val); |
| zx_debug_send_command(cmd, strlen(cmd)); |
| } |
| |
| int main(int argc, char **argv) { |
| if (argc < 2) { |
| printf("Usage: %s [read|write]\n", argv[0]); |
| return 1; |
| } |
| |
| if (!strcmp(argv[1], "read")) { |
| bad_kernel_access_read(); |
| } else if (!strcmp(argv[1], "write")) { |
| bad_kernel_access_write(); |
| } |
| return 0; |
| } |