Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

305
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!