• [^] # Re: oubli

    Posté par . En réponse au journal Chronique d'une violation de licence ordinaire.... Évalué à 4.

    J'ai mis seulement le compte des lignes là, mais en fait j'ai regardé le détail, et c'est vraiment très clair.

    Dans ton exemple, les chaines en question sont principalement des noms de symboles, parceque tes binaires sont liés dynamiquement à la même bibliothèque (libc), et font bien sûr en partie appel aux même fonctions.

    Mais ce que moi j'ai comparé, ce sont des binaires statiques strippé, où l'on ne retrouve pas ces chaines ci. Celles qui restent sont presques toutes des vraies chaines du programmes (en gros les messages balancés sur stderr/stdout). Je te colle en exemple, pour pas faire trop long, celles communes à busybox et minimod et qui sont de longueur >=20 et qui ne concernent pas le format ELF :

    % cat /tmp/busybox-strings.txt /tmp/minimod-strings.txt | sort | uniq -d | grep "...................." | grep -v -i elf
    A module named %s already exists
    Can't allocate kernel memory for module; needed %lu bytes
    can't handle sections of type %ld
    Could not load the module
    couldn't find the kernel version the module was compiled for
    improperly terminated string argument for %s
    invalid argument syntax for %s
    invalid parameter %s
    kernel-module version mismatch
    local symbol %s with index %ld exceeds local_symtab_size %ld
    Not configured to support old kernels
    parameter type 'c' for %s must be followed by the maximum size
    query_module: QM_INFO: %s
    query_module: QM_SYMBOLS: %s
    RELA relocations not supported on this architecture
    relocation entry size mismatch: %lu != %lu
    section header size mismatch: %lu != %lu
    %s of type %ld for %s
    string too long for %s (max %ld)
    %s was compiled for kernel version %s
    symbol for parameter %s not found
    symbol size mismatch: %lu != %lu
    too few values for %s (min %d)
    too many values for %s (max %d)
    Unhandled relocation
    unknown parameter type '%c' for %s
    unresolved symbol %s
    Warning: kernel-module version mismatch
    Warning: unhandled reloc %d
    while this kernel is version %s
    while this kernel is version %s.


    Bien sûr, ça n'a rien d'une preuve absolue et ça peut être par hasard que dans les deux code le dernier message c'est trouvé écrit un coup avec un point et un coup sans, m'enfin bon, faut pas pousser :)

    Si on prend à titre de comparaison le même test effectué entre busybox et insmod+modprobe+rmmod, on trouve seulement 3 chaines (alors que eux pourraient légitimement partager du code) :


    % ( strings /sbin/insmod ; strings /sbin/modprobe ; strings /sbin/rmmod ) | sort -u > /tmp/modutils-strings.txt
    % cat /tmp/modutils-strings.txt /tmp/busybox-strings.txt | sort | uniq -d | grep "...................." | grep -v -i elf
    Invalid module format
    Module has wrong symbol version
    Unknown symbol in module


    Ça donne une idée de combien ce genre de coincidence est improbable.