// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.unix.Chroot -analyzer-store region -verify %s extern int chroot(const char* path); extern int chdir(const char* path); void foo(void) { } void f1(void) { chroot("/usr/local"); // root changed. foo(); // expected-warning {{No call of chdir("/") immediately after chroot}} } void f2(void) { chroot("/usr/local"); // root changed. chdir("/"); // enter the jail. foo(); // no-warning } void f3(void) { chroot("/usr/local"); // root changed. chdir("../"); // change working directory, still out of jail. foo(); // expected-warning {{No call of chdir("/") immediately after chroot}} } |