1 | /* $OpenBSD$ */ |
2 | |
3 | /* |
4 | * Author: Tatu Ylonen <[email protected]> |
5 | * Copyright (c) 1995 Tatu Ylonen <[email protected]>, Espoo, Finland |
6 | * All rights reserved |
7 | * Created: Mon Mar 20 22:09:17 1995 ylo |
8 | * |
9 | * Versions of malloc and friends that check their results, and never return |
10 | * failure (they call fatal if they encounter an error). |
11 | * |
12 | * As far as I am concerned, the code I have written for this software |
13 | * can be used freely for any purpose. Any derived versions of this |
14 | * software must be clearly marked as such, and if the derived work is |
15 | * incompatible with the protocol description in the RFC file, it must be |
16 | * called by a name other than "ssh" or "Secure Shell". |
17 | */ |
18 | |
19 | #ifndef XMALLOC_H |
20 | #define XMALLOC_H |
21 | |
22 | #if !defined(__bounded__) |
23 | #define __bounded__(x, y, z) |
24 | #endif |
25 | |
26 | void *xmalloc(size_t); |
27 | void *xcalloc(size_t, size_t); |
28 | void *xrealloc(void *, size_t); |
29 | void *xreallocarray(void *, size_t, size_t); |
30 | void *xrecallocarray(void *, size_t, size_t, size_t); |
31 | char *xstrdup(const char *); |
32 | char *xstrndup(const char *, size_t); |
33 | int xasprintf(char **, const char *, ...) |
34 | __attribute__((__format__ (printf, 2, 3))) |
35 | __attribute__((__nonnull__ (2))); |
36 | int xvasprintf(char **, const char *, va_list) |
37 | __attribute__((__nonnull__ (2))); |
38 | int xsnprintf(char *, size_t, const char *, ...) |
39 | __attribute__((__format__ (printf, 3, 4))) |
40 | __attribute__((__nonnull__ (3))) |
41 | __attribute__((__bounded__ (__string__, 1, 2))); |
42 | int xvsnprintf(char *, size_t, const char *, va_list) |
43 | __attribute__((__nonnull__ (3))) |
44 | __attribute__((__bounded__ (__string__, 1, 2))); |
45 | |
46 | #endif /* XMALLOC_H */ |
47 | |