This file is indexed.

/usr/include/polarssl/memory.h is in libpolarssl-dev 1.3.4-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/**
 * \file memory.h
 *
 * \brief Memory allocation layer
 *
 *  Copyright (C) 2006-2013, Brainspark B.V.
 *
 *  This file is part of PolarSSL (http://www.polarssl.org)
 *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
 *
 *  All rights reserved.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
#ifndef POLARSSL_MEMORY_H
#define POLARSSL_MEMORY_H

#include "config.h"

#include <stdlib.h>

#if !defined(POLARSSL_CONFIG_OPTIONS)
#define POLARSSL_MEMORY_ALIGN_MULTIPLE       4 /**< Align on multiples of this value */

#define POLARSSL_MEMORY_STDMALLOC       malloc /**< Default allocator to use, can be undefined */
#define POLARSSL_MEMORY_STDFREE           free /**< Default free to use, can be undefined */
#endif /* POLARSSL_CONFIG_OPTIONS */

#define MEMORY_VERIFY_NONE         0
#define MEMORY_VERIFY_ALLOC        (1 << 0)
#define MEMORY_VERIFY_FREE         (1 << 1)
#define MEMORY_VERIFY_ALWAYS       (MEMORY_VERIFY_ALLOC | MEMORY_VERIFY_FREE)

#ifdef __cplusplus
extern "C" {
#endif

/*
 * The function pointers for malloc and free
 */
extern void * (*polarssl_malloc)( size_t len );
extern void (*polarssl_free)( void *ptr );

/**
 * \brief   Set your own memory implementation function pointers
 *
 * \param malloc_func   the malloc function implementation
 * \param free_func     the free function implementation
 *
 * \return              0 if successful
 */
int memory_set_own( void * (*malloc_func)( size_t ),
                    void (*free_func)( void * ) );

#if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C)
/**
 * \brief   Initialize use of stack-based memory allocator.
 *          The stack-based allocator does memory management inside the
 *          presented buffer and does not call malloc() and free().
 *          It sets the global polarssl_malloc() and polarssl_free() pointers
 *          to its own functions.
 *          (Provided polarssl_malloc() and polarssl_free() are thread-safe if
 *           POLARSSL_THREADING_C is defined)
 *
 * \note    This code is not optimized and provides a straight-forward
 *          implementation of a stack-based memory allocator.
 *
 * \param buf   buffer to use as heap
 * \param len   size of the buffer
 *
 * \return              0 if successful
 */
int memory_buffer_alloc_init( unsigned char *buf, size_t len );

/**
 * \brief   Free the mutex for thread-safety and clear remaining memory
 */
void memory_buffer_alloc_free();

/**
 * \brief   Determine when the allocator should automatically verify the state
 *          of the entire chain of headers / meta-data.
 *          (Default: MEMORY_VERIFY_NONE)
 *
 * \param verify    One of MEMORY_VERIFY_NONE, MEMORY_VERIFY_ALLOC,
 *                  MEMORY_VERIFY_FREE or MEMORY_VERIFY_ALWAYS
 */
void memory_buffer_set_verify( int verify );

#if defined(POLARSSL_MEMORY_DEBUG)
/**
 * \brief   Print out the status of the allocated memory (primarily for use
 *          after a program should have de-allocated all memory)
 *          Prints out a list of 'still allocated' blocks and their stack
 *          trace if POLARSSL_MEMORY_BACKTRACE is defined.
 */
void memory_buffer_alloc_status();
#endif /* POLARSSL_MEMORY_DEBUG */

/**
 * \brief   Verifies that all headers in the memory buffer are correct
 *          and contain sane values. Helps debug buffer-overflow errors.
 *
 *          Prints out first failure if POLARSSL_MEMORY_DEBUG is defined.
 *          Prints out full header information if POLARSSL_MEMORY_DEBUG_HEADERS
 *          is defined. (Includes stack trace information for each block if
 *          POLARSSL_MEMORY_BACKTRACE is defined as well).
 *
 * \returns             0 if verified, 1 otherwise
 */
int memory_buffer_alloc_verify();

#endif /* POLARSSL_MEMORY_BUFFER_ALLOC_C */

#ifdef __cplusplus
}
#endif

#endif /* memory.h */