C and C++ Binaries


MISC.CHROOT.NOCHDIR : chroot without chdir

Summary

chroot() is called, and there is at least one execution path in which there is no suitable subsequent call to chdir().

A subsequent call to chdir() is considered "suitable" if both of the following are true.

This class is a strict subset of Use of chroot.

Properties

Class Name chroot without chdir
Significance security
Mnemonic MISC.CHROOT.NOCHDIR
Categories
MisraC2023 MisraC2023:D.4.13 Functions which are designed to provide operations on a resource should be called in an appropriate sequence
Misra2012 Misra2012:D.4.13 Functions which are designed to provide operations on a resource should be called in an appropriate sequence
CWE CWE:243 Creation of chroot Jail Without Changing Working Directory
  CWE:676 Use of Potentially Dangerous Function
CERT-C CERT-C:POS05-C Limit access to files by creating a jail
BSI BSI:CHROOT-01  
  BSI:CHROOT-02  
  BSI:CHROOT-03  
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="chroot without chdir"
To enable all BSI-related classes, including all BSI-specific BADFUNC classes, use the bsi configuration preset.

Example

#include <unistd.h>
#include <stdio.h>

int chroot_no_chdir(const char *fname, char *buf){
    FILE *localfile;
    int bytesread=0;
    if (chroot("/downloaddir")==-1){return 0;} /* 'chroot without chdir' warning issued here:
                                                *  there is at least one path on which chdir() is not subsequently called */
    if (fname){
        if (localfile = fopen(fname, "r")){
            bytesread = fread(buf, 1, sizeof(buf), localfile);
            fclose(localfile);
        }
        if (chdir("/")==-1){return 0-bytesread;}        /* chdir() is only called if fname!=NULL - not on all paths */
    }
    return bytesread;
}

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.