07 Oct, 2018

1 commit


25 Aug, 2018

5 commits

  • Compiling U-Boot with ubsan/asan libraries and running it in sandbox
    may lead to below backtrace:

    => avb init 0
    => avb verify
    ## Android Verified Boot 2.0 version 1.1.0
    read_is_device_unlocked not supported yet
    common/avb_verify.c:407:31: runtime error: division by zero
    AddressSanitizer:DEADLYSIGNAL
    Reviewed-by: Igor Opaniuk

    =================================================================
    ==9388==ERROR: AddressSanitizer: FPE on unknown address 0x0000004b467f \
    (pc 0x0000004b467f bp 0x000000000000 sp 0x7ffd899fe150 T0)
    #0 0x4b467e in mmc_byte_io common/avb_verify.c:407
    #1 0x4b4c47 in mmc_byte_io common/avb_verify.c:532
    #2 0x4b4c47 in read_from_partition common/avb_verify.c:533
    #3 0x69dc0d in load_and_verify_vbmeta lib/libavb/avb_slot_verify.c:560
    #4 0x6a1ee6 in avb_slot_verify lib/libavb/avb_slot_verify.c:1139
    #5 0x45dabd in do_avb_verify_part cmd/avb.c:245
    #6 0x4af77c in cmd_call common/command.c:499
    #7 0x4af77c in cmd_process common/command.c:538
    #8 0x46bafc in run_pipe_real common/cli_hush.c:1677
    #9 0x46bafc in run_list_real common/cli_hush.c:1875
    #10 0x46c780 in run_list common/cli_hush.c:2024
    #11 0x46c780 in parse_stream_outer common/cli_hush.c:3216
    #12 0x46d34b in parse_file_outer common/cli_hush.c:3299
    #13 0x4ad609 in cli_loop common/cli.c:217
    #14 0x4625ae in main_loop common/main.c:65
    #15 0x46f2d1 in run_main_loop common/board_r.c:648
    #16 0x640253 in initcall_run_list lib/initcall.c:30
    #17 0x46f9d0 in board_init_r common/board_r.c:879
    #18 0x40539b in main arch/sandbox/cpu/start.c:321
    #19 0x7fa94925f82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #20 0x408908 in _start (/srv/R/u-boot-master/u-boot+0x408908)

    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: FPE common/avb_verify.c:407 in mmc_byte_io
    ==9388==ABORTING

    Signed-off-by: Eugeniu Rosca

    Eugeniu Rosca
     
  • Cppcheck (v1.85) reports w/o this patch:

    [common/avb_verify.c:738] -> [common/avb_verify.c:741]: (warning) \
    Either the condition 'ops' is redundant or there is possible null \
    pointer dereference: ops.

    Signed-off-by: Eugeniu Rosca
    Reviewed-by: Igor Opaniuk

    Eugeniu Rosca
     
  • Cppcheck (v1.85) reports w/o this patch:

    [common/avb_verify.c:351]: (error) Memory leak: part
    [common/avb_verify.c:356]: (error) Memory leak: part
    [common/avb_verify.c:361]: (error) Memory leak: part
    [common/avb_verify.c:366]: (error) Memory leak: part

    Signed-off-by: Eugeniu Rosca
    Reviewed-by: Igor Opaniuk

    Eugeniu Rosca
     
  • Fix sparse complaint:

    common/avb_verify.c:14:21: warning: \
    symbol 'avb_root_pub' was not declared. Should it be static?

    Signed-off-by: Eugeniu Rosca
    Reviewed-by: Igor Opaniuk

    Eugeniu Rosca
     
  • Fix below compiler [1] warning:

    common/avb_verify.c: In function ‘avb_find_dm_args’:
    common/avb_verify.c:179:30: warning: left-hand operand of comma expression has no effect [-Wunused-value]
    for (i = 0; i < AVB_MAX_ARGS, args[i]; ++i) {

    [1] aarch64-linux-gnu-gcc (Linaro GCC 7.2-2017.11)

    Signed-off-by: Eugeniu Rosca
    Reviewed-by: Igor Opaniuk

    Eugeniu Rosca
     

14 Aug, 2018

1 commit

  • Implement get_size_of_partition() operation,
    which is required by the latest upstream libavb [1].

    [1] https://android.googlesource.com/platform/external/avb/+/android-p-preview-5

    Signed-off-by: Igor Opaniuk
    Acked-by: Andrew F. Davis
    Reviewed-by: Sam Protsenko

    Igor Opaniuk
     

24 Jul, 2018

1 commit


19 Jun, 2018

2 commits

  • 1. Add initial support of boot states mode (red, green, yellow)
    2. Add functions for enforcing dm-verity configurations

    Signed-off-by: Igor Opaniuk

    Igor Opaniuk
     
  • Implement AVB ops on top of existing mmc subsystem API. Currently there
    is a full implementation of such operations, defined by [1]
    AVB2.0 specification:

    .read_from_partition() - reads N bytes from a partition identified by
    a name.
    .write_to_partition() - Writes N bytes to a partition identified by a name.
    .validate_vbmeta_public_key() - checks if the given public ‘vbmeta’
    partition is trusted.
    .get_unique_guid_for_partition() - Gets the GUID for a partition identified
    by a string name.

    As [1] specification recommends to use tamper-evident storage for storing
    rollback indexes and device state (LOCKED/UNLOCKED),
    currently are only stubs instead of full implementation for these ops:
    .read_rollback_index() - Gets the rollback index for a given index location
    .write_rollback_index() - Sets the rollback index to a given location
    .read_is_device_unlocked() - Gets where the device is unlocked

    [1] https://android.googlesource.com/platform/external/avb/+/master/README.md

    Signed-off-by: Igor Opaniuk

    Igor Opaniuk