19 Dec, 2012

1 commit

  • Pull module update from Rusty Russell:
    "Nothing all that exciting; a new module-from-fd syscall for those who
    want to verify the source of the module (ChromeOS) and/or use standard
    IMA on it or other security hooks."

    * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
    MODSIGN: Fix kbuild output when using default extra_certificates
    MODSIGN: Avoid using .incbin in C source
    modules: don't hand 0 to vmalloc.
    module: Remove a extra null character at the top of module->strtab.
    ASN.1: Use the ASN1_LONG_TAG and ASN1_INDEFINITE_LENGTH constants
    ASN.1: Define indefinite length marker constant
    moduleparam: use __UNIQUE_ID()
    __UNIQUE_ID()
    MODSIGN: Add modules_sign make target
    powerpc: add finit_module syscall.
    ima: support new kernel module syscall
    add finit_module syscall to asm-generic
    ARM: add finit_module syscall to ARM
    security: introduce kernel_module_from_file hook
    module: add flags arg to sys_finit_module()
    module: add syscall to load module from fd

    Linus Torvalds
     

14 Dec, 2012

1 commit


05 Dec, 2012

1 commit

  • Fix an error in asn1_find_indefinite_length() whereby small definite length
    elements of size 0x7f are incorrecly classified as non-small. Without this
    fix, an error will be given as the length of the length will be perceived as
    being very much greater than the maximum supported size.

    Signed-off-by: David Howells
    Signed-off-by: Rusty Russell

    David Howells
     

10 Oct, 2012

1 commit

  • asn1_find_indefinite_length() returns an error indicator of -1, which the
    caller asn1_ber_decoder() places in a size_t (which is usually unsigned) and
    then checks to see whether it is less than 0 (which it can't be). This can
    lead to the following warning:

    lib/asn1_decoder.c:320 asn1_ber_decoder()
    warn: unsigned 'len' is never less than zero.

    Instead, asn1_find_indefinite_length() update the caller's idea of the data
    cursor and length separately from returning the error code.

    Reported-by: Dan Carpenter
    Signed-off-by: David Howells
    Signed-off-by: Rusty Russell

    David Howells
     

08 Oct, 2012

1 commit

  • Add an ASN.1 BER/DER/CER decoder. This uses the bytecode from the ASN.1
    compiler in the previous patch to inform it as to what to expect to find in the
    encoded byte stream. The output from the compiler also tells it what functions
    to call on what tags, thus allowing the caller to retrieve information.

    The decoder is called as follows:

    int asn1_decoder(const struct asn1_decoder *decoder,
    void *context,
    const unsigned char *data,
    size_t datalen);

    The decoder argument points to the bytecode from the ASN.1 compiler. context
    is the caller's context and is passed to the action functions. data and
    datalen define the byte stream to be decoded.

    Note that the decoder is currently limited to datalen being less than 64K.
    This reduces the amount of stack space used by the decoder because ASN.1 is a
    nested construct. Similarly, the decoder is limited to a maximum of 10 levels
    of constructed data outside of a leaf node also in an effort to keep stack
    usage down.

    These restrictions can be raised if necessary.

    Signed-off-by: David Howells
    Signed-off-by: Rusty Russell

    David Howells