Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

SSL allowed_prefix.c

  Interaktion und
PortierbarkeitC
 

/*++
/* NAME
/* allowed_prefix 3
/* SUMMARY
/* Match a pathname against a list of allowed parent directories
/* SYNOPSIS
/* #include <allowed_prefix.h>
/*
/* ALLOWED_PREFIX *allowed_prefix_create(const char *prefixes)
/*
/* bool allowed_prefix_match(
/* ALLOWED_PREFIX *tp,
/* const char *candidate_path)
/*
/* void allowed_prefix_free(ALLOWED_PREFIX *tp)
/* DESCRIPTION
/* This module matches an absolute candidate pathname against a
/* list of allowed absolute parent directory names. The matching
/* is based solely on string comparisons.
/*
/* The matcher will not match relative pathnames, and logs a warning
/* if it encounters one in its inputs.
/*
/* allowed_prefix_create() instantiates an allowed parent matcher
/* and returns a pointer to the result. The input must be a list
/* of directory absolute pathnames separated by comma or whitespace.
/*
/* allowed_prefix_match() matches a candidate absolute pathname
/* against an ALLOWED_PREFIX instance.
/*
/* allowed_prefix_free() destroys an ALLOWED_PREFIX instance.
/* BUGS
/* Does not collapse multiple instances of '/' in the middle of a
/* pathname.
/* LICENSE
/* .ad
/* .fi
/* The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/* Wietse Venema
/* porcupine.org
/*--*/


 /*
  * System library.
  */

#include <sys_defs.h>
#include <string.h>

 /*
  * Utility library.
  */

#include <htable.h>
#include <msg.h>
#include <mymalloc.h>
#include <split_at.h>
#include <stringops.h>

 /*
  * Global library.
  */

#include <allowed_prefix.h>

/* decline_request_with - shared nagging code */

static bool decline_request_with(const char *what, const char *path)
{
    msg_warn("request to allowlist prefix with %s: '%s'", what, path);
    return (false);
}

/* allowed_prefix_create - instantiate an allowed parent matcher */

ALLOWED_PREFIX *allowed_prefix_create(const char *prefixes)
{
    ALLOWED_PREFIX *tp;
    char   *bp, *prefix, *saved_prefixes;
    size_t  len;

    bp = saved_prefixes = mystrdup(prefixes);
    tp = argv_alloc(5);
    while ((prefix = mystrtok(&bp, CHARS_COMMA_SP)) != 0) {
 if (*prefix != '/') {
     (void) decline_request_with("relative pathname",prefix);
     continue;
 }
 /* Trim trailing '/'. */
 for (len = strlen(prefix); len > 0; len--) {
     if (prefix[len - 1] != '/')
  break;
 }
 prefix[len] = 0;
 argv_add(tp, prefix, (char *) 0);
    }
    myfree(saved_prefixes);
    return (tp);
}

/* allowed_prefix_match - match candidate against allowed prefixes */

bool    allowed_prefix_match(ALLOWED_PREFIX *tp, const char *candidate_path)
{
    char  **cpp;
    ssize_t len;

    if (*candidate_path != '/')
 return (decline_request_with("relative pathname", candidate_path));
    if (strstr(candidate_path, "/../") != 0)
 return (decline_request_with("'/../'", candidate_path));

    /*
     * The number of allowed prefixes will be limited. linear search will be
     * OK.
     */

    for (cpp = tp->argv; *cpp; cpp++) {
 len = strlen(*cpp);
 if (strncmp(*cpp, candidate_path, len) == 0
     && candidate_path[len] == '/')
     return (true);
    }
    return (false);
}

/* allowed_prefix_free - destroy allowed parent matcher */

void    allowed_prefix_free(ALLOWED_PREFIX *tp)
{
    argv_free(tp);
}

Messung V0.5 in Prozent
C=74 H=95 G=84

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.25Angebot  (Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-08-08) ¤

*Eine klare Vorstellung vom Zielzustand






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002