This file is indexed.

/usr/include/tins/exceptions.h is in libtins-dev 3.4-2+b1.

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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
/*
 * Copyright (c) 2016, Matias Fontanini
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * * Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 * * Redistributions in binary form must reproduce the above
 *   copyright notice, this list of conditions and the following disclaimer
 *   in the documentation and/or other materials provided with the
 *   distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */

#ifndef TINS_EXCEPTIONS_H
#define TINS_EXCEPTIONS_H

#include <string>
#include <stdexcept>

namespace Tins {

/**
 * \brief Base class for all libtins exceptions.
 */
class exception_base : public std::runtime_error {
public:
    exception_base() 
    : std::runtime_error(std::string()) { }

    exception_base(const std::string& message) 
    : std::runtime_error(message) { }
};

/**
 * \brief Exception thrown when an option is not found.
 */
class option_not_found : public exception_base {
public:
    // try to avoid allocations by doing this.
    const char* what() const throw() {
        return "Option not found";
    }
};

/**
 * \brief Exception thrown when a malformed packet is parsed.
 */
class malformed_packet : public exception_base {
public:
    const char* what() const throw() {
        return "Malformed packet";
    }
};

/**
 * \brief Exception thrown when serializing a packet fails.
 */
class serialization_error : public exception_base {
public:
    const char* what() const throw() {
        return "Serialization error";
    }
};

/**
 * \brief Exception thrown when a PDU is not found when using PDU::rfind_pdu.
 */
class pdu_not_found : public exception_base {
public:
    const char* what() const throw() {
        return "PDU not found";
    }
};

/**
 * \brief Exception thrown when PDU::send requires a valid interface,
 * but an invalid is used.
 */
class invalid_interface : public exception_base {
public:
    const char* what() const throw() {
        return "Invalid interface";
    }
};

/**
 * \brief Exception thrown when an invalid string representation of an address
 * is provided
 */
class invalid_address : public exception_base {
public:
    const char* what() const throw() {
        return "Invalid address";
    }
};

/**
 * \brief Exception thrown when a field is not present in frame.
 */
class field_not_present : public exception_base {
public:
    const char* what() const throw() {
        return "Field not present";
    }
};

/**
 * \brief Exception thrown when PacketSender fails to open a socket.
 */
class socket_open_error : public exception_base {
public:
    socket_open_error(const std::string& msg)
    : exception_base(msg) { }
};

/**
 * \brief Exception thrown when PacketSender fails to close a socket.
 */
class socket_close_error : exception_base {
public:
    socket_close_error(const std::string& msg)
    : exception_base(msg) { }
};

/**
 * \brief Exception thrown when PacketSender fails to write on a socket.
 */
class socket_write_error : public exception_base {
public:
    socket_write_error(const std::string& msg)
    : exception_base(msg) { }
};

/**
 * \brief Exception thrown when an invalid socket type is provided
 * to PacketSender.
 */
class invalid_socket_type : public exception_base {
public:
    const char* what() const throw() {
        return "The provided socket type is invalid";
    }
};

/**
 * \brief Exception thrown when an unkown link layer PDU type is
 * found while sniffing.
 */
class unknown_link_type : public exception_base {
public:
    const char* what() const throw() {
        return "The sniffed link layer PDU type is unknown";
    }
};

/**
 * \brief Exception thrown when a malformed option is found.
 */
class malformed_option : public exception_base {
public:
    const char* what() const throw() {
        return "Malformed option";
    }
};

/**
 * \brief Exception thrown when a call to tins_cast fails.
 */
class bad_tins_cast : public exception_base {
public:
    const char* what() const throw() {
        return "Bad Tins cast";
    }
};

/**
 * \brief Exception thrown when sniffing a protocol that
 * has been disabled at compile time.
 */
class protocol_disabled : public exception_base {
public:
    const char* what() const throw() {
        return "Protocol disabled";
    }
};

/**
 * \brief Exception thrown when a feature has been disabled
 * at compile time.
 */
class feature_disabled : public exception_base {
public:
    const char* what() const throw() {
        return "Feature disabled";
    }
};

/**
 * \brief Exception thrown when a payload is too large to fit
 * into a PDUOption.
 */
class option_payload_too_large : public exception_base {
public:
    const char* what() const throw() {
        return "Option payload too large";
    }
};

/**
 * \brief Generic pcap error
 */
class pcap_error : public exception_base {
public:
    pcap_error(const char* message) : exception_base(message) {

    }
};

/**
 * \brief Exception thrown when an invalid pcap filter is compiled
 */
class invalid_pcap_filter : public exception_base {
public:
    invalid_pcap_filter(const char* message) : exception_base(message) {

    }
};

/**
 * \brief Exception thrown when serialiation of a non-serializable PDU
 * is attempted
 */
class pdu_not_serializable : public exception_base {
public:
    const char* what() const throw() {
        return "PDU not serializable";
    }
};

/**
 * \brief Exception thrown when opening a pcap handle fails
 */
class pcap_open_failed : public exception_base {
public:
    const char* what() const throw() {
        return "Failed to create pcap handle";
    }
};

/**
 * \brief Exception thrown when a function not supported on the current OS
 * is called
 */
class unsupported_function : public exception_base {
public:
    const char* what() const throw() {
        return "Function is not supported on this OS";
    }
};

/**
 * \brief Exception thrown when an invalid domain name is parsed
 */
class invalid_domain_name : public exception_base {
public:
    const char* what() const throw() {
        return "Invalid domain name";
    }
};

/**
 * \brief Exception thrown when a stream is not found
 */
class stream_not_found : public exception_base {
public:
    const char* what() const throw() {
        return "Stream not found";
    }
};

/**
 * \brief Exception thrown when a required callback for an object is not set
 */
class callback_not_set : public exception_base {
public:
    const char* what() const throw() {
        return "Callback not set";
    }
};

/**
 * \brief Exception thrown when an invalid packet is provided to some function
 */
class invalid_packet : public exception_base {
public:
    const char* what() const throw() {
        return "Invalid packet";
    }
};

namespace Crypto {
namespace WPA2 {
    /**
     * \brief Exception thrown when an invalid WPA2 handshake is found.
     */
    class invalid_handshake : public exception_base {
    public:
        const char* what() const throw() {
            return "Invalid WPA2 handshake";
        }
    };
} // WPA2
} // Crypto

} // Tins

#endif // TINS_EXCEPTIONS_H