Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

307
Visualizações
¿Se puede usar clang Address Sanitizer si solo se compiló la aplicación principal con clang?

Mi aplicación usa bibliotecas estáticas compiladas con gcc: Boost (C++ 11 lambdas (con función boost bind y boost)) Bullet; bibliotecas compartidas del sistema, como SDL, y una biblioteca compartida compilada con clang. ¿Es posible que tal zoológico arruine AdressSanitizer?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Sí si no están instrumentados:

https://code.google.com/p/address-sanitizer/wiki/AddressSanitizer

Para usar AddressSanitizer, deberá compilar y vincular su programa usando clang con el interruptor -fsanitize=address.

over 4 years ago · Santiago Trujillo Relatório

0

La biblioteca de tiempo de ejecución ASan debe estar presente en su programa, por lo que su ejecutable principal debe estar vinculado con el indicador -fsanitize=dirección. La vinculación de bibliotecas no instrumentadas e instrumentadas juntas puede funcionar, a menos que el código instrumentado se ejecute antes de que se inicialice la biblioteca de tiempo de ejecución (creo que es imposible en Linux en este momento). Tenga en cuenta que AddressSanitizer no podrá encontrar problemas de direccionamiento en el código que no haya sido instrumentado por Clang.

over 4 years ago · Santiago Trujillo Relatório

0

Los desinfectantes Clang se pueden usar de la siguiente manera

  1. Descargue la cadena de herramientas clang desde aquí http://releases.llvm.org/download.html

     $ wget http://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz $ tar -Jxvf clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz $ CLANG=$PWD/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04
  2. programa de muestra

     $ cat hello.c #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int *a = (int *) malloc(sizeof(int)*2); int n = atoi(argv[1]); a[n] = 10; return 0; }
  3. Compile el programa con desinfectante de direcciones

     $ $CLANG/bin/clang -O0 -g -fno-omit-frame-pointer -fsanitize=address -o hello hello.c
  4. Correr

     $ ASAN_SYMBOLIZER_PATH=$CLANG/bin/llvm-symbolizer ./hello 12 ================================================================= ==48489==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000000040 at pc 0x0000004c2981 bp 0x7ffe3f888c30 sp 0x7ffe3f888c28 WRITE of size 4 at 0x602000000040 thread T0 #0 0x4c2980 in main /b/syrajendra/clang-libs/hello.c:8:8 #1 0x7f0349c3a82f in __libc_start_main /build/glibc-Cl5G7W/glibc- 2.23/csu/../csu/libc-start.c:291 #2 0x41b2f8 in _start (/b/syrajendra/clang-libs/hello+0x41b2f8) Address 0x602000000040 is a wild pointer. SUMMARY: AddressSanitizer: heap-buffer-overflow /b/syrajendra/clang- libs/hello.c:8:8 in main Shadow bytes around the buggy address: 0x0c047fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c047fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c047fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c047fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c047fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x0c047fff8000: fa fa 00 fa fa fa fa fa[fa]fa fa fa fa fa fa fa 0x0c047fff8010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c047fff8020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c047fff8030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c047fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c047fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb Shadow gap: cc ==48489==ABORTING
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda