This file is indexed.

/usr/include/openvas/misc/network.h is in libopenvas-dev 8.0.8-2.

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
/* OpenVAS
 * $Id$
 * Description: Header file for module network.
 *
 * Authors:
 * Renaud Deraison <deraison@nessus.org> (Original pre-fork development)
 *
 * Copyright:
 * Based on work Copyright (C) 1998 - 2007 Tenable Network Security, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library 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
 * Library 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 St, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#ifndef OPENVAS_NETWORK_H
#define OPENVAS_NETWORK_H

#include <sys/select.h>         /* at least for fd_set */
#include <netinet/in.h>         /* struct in_addr, struct in6_addr */

#include <gnutls/gnutls.h>
#include <gnutls/x509.h>

#include "arglists.h"
#include "../base/openvas_networking.h"

/*
 * Type of "transport layer", for encapsulated connections
 * Only SSL is supported at this time.
 * (Bad) examples of other layers could be SOCKS, httptunnel, icmptunnel,
 * RMI over HTTP, DCOM over HTTP, TCP over TCP, etc.
 */
typedef enum openvas_encaps {
    OPENVAS_ENCAPS_AUTO = 0,   /* Request auto detection.  */
    OPENVAS_ENCAPS_IP,
    OPENVAS_ENCAPS_SSLv23, /* Ask for compatibility options */
    OPENVAS_ENCAPS_SSLv2,
    OPENVAS_ENCAPS_SSLv3,
    OPENVAS_ENCAPS_TLSv1,
    OPENVAS_ENCAPS_TLSv11,
    OPENVAS_ENCAPS_TLSv12,
    OPENVAS_ENCAPS_TLScustom, /* SSL/TLS using custom priorities.  */
    OPENVAS_ENCAPS_MAX,
} openvas_encaps_t;

#define IS_ENCAPS_SSL(x) ((x) >= OPENVAS_ENCAPS_SSLv23 && (x) <= OPENVAS_ENCAPS_TLScustom)

/* Plugin specific network functions */
int open_sock_tcp (struct arglist *, unsigned int, int);
int open_sock_option (struct arglist *, unsigned int, int, int, int);
int recv_line (int, char *, size_t);
int nrecv (int, void *, int, int);
int socket_close (int);
int get_sock_infos (int sock, int *r_transport, void **r_tls_session);
unsigned short *getpts (char *, int *);

int open_stream_connection (struct arglist *, unsigned int, int, int);
int open_stream_connection_ext (struct arglist *, unsigned int, int, int,
                                const char *);
int open_stream_auto_encaps_ext (struct arglist *args, unsigned int port,
                                 int timeout, int force);

int write_stream_connection (int, void *buf, int n);
int read_stream_connection (int, void *, int);
int read_stream_connection_min (int, void *, int, int);
int nsend (int, void *, int, int);
void add_close_stream_connection_hook (int (*)(int));
int close_stream_connection (int);

const char *get_encaps_name (openvas_encaps_t);
const char *get_encaps_through (openvas_encaps_t);

/* Additional functions -- should not be used by the plugins */
int open_sock_opt_hn (const char *, unsigned int, int, int, int);

int openvas_SSL_init (void);

int stream_set_buffer (int, int);
int stream_get_buffer_sz (int);
int stream_get_err (int);

struct ovas_scanner_context_s;
typedef struct ovas_scanner_context_s *ovas_scanner_context_t;

ovas_scanner_context_t
ovas_scanner_context_new (openvas_encaps_t, const char *, const char *,
                          const char *, const char *, const char *,
                          const char *);

void ovas_scanner_context_free (ovas_scanner_context_t);
int ovas_scanner_context_attach (ovas_scanner_context_t ctx, int soc);

int openvas_register_connection (int s, void *ssl,
                                 gnutls_certificate_credentials_t certcred,
                                 openvas_encaps_t encaps);
int openvas_deregister_connection (int);
int openvas_get_socket_from_connection (int);
gnutls_session_t ovas_get_tlssession_from_connection (int);

int stream_zero (fd_set *);
int stream_set (int, fd_set *);

int os_send (int, void *, int, int);
int os_recv (int, void *, int, int);

int internal_send (int, char *, int);
int internal_recv (int, char **, int *, int *);

int fd_is_stream (int);

int stream_set_timeout (int, int);

int socket_negotiate_ssl (int, openvas_encaps_t, struct arglist *);
void socket_get_cert (int, void **, int *);
int socket_get_ssl_version (int);
void socket_get_ssl_session_id (int, void **, size_t *);
int socket_get_ssl_compression (int);
int socket_get_ssl_ciphersuite (int);

#endif