c2dc3784f1
When passing a NetName via an invitation, we don't allow any characters that are unsafe (either because they could cause shells to expand things, or because they are not allowed on some filesystems). Also, warn when tinc is started with unsafe netnames.
57 lines
2.2 KiB
C
57 lines
2.2 KiB
C
/*
|
|
utils.h -- header file for utils.c
|
|
Copyright (C) 1999-2005 Ivo Timmermans
|
|
2000-2013 Guus Sliepen <guus@tinc-vpn.org>
|
|
|
|
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 __TINC_UTILS_H__
|
|
#define __TINC_UTILS_H__
|
|
|
|
extern int hex2bin(const char *src, void *dst, int length);
|
|
extern int bin2hex(const void *src, char *dst, int length);
|
|
|
|
extern int b64encode(const void *src, char *dst, int length);
|
|
extern int b64encode_urlsafe(const void *src, char *dst, int length);
|
|
extern int b64decode(const char *src, void *dst, int length);
|
|
|
|
#ifdef HAVE_MINGW
|
|
extern const char *winerror(int);
|
|
#define strerror(x) ((x)>0?strerror(x):winerror(GetLastError()))
|
|
#define sockerrno WSAGetLastError()
|
|
#define sockstrerror(x) winerror(x)
|
|
#define sockwouldblock(x) ((x) == WSAEWOULDBLOCK || (x) == WSAEINTR)
|
|
#define sockmsgsize(x) ((x) == WSAEMSGSIZE)
|
|
#define sockinprogress(x) ((x) == WSAEINPROGRESS || (x) == WSAEWOULDBLOCK)
|
|
#define sockinuse(x) ((x) == WSAEADDRINUSE)
|
|
#define socknotconn(x) ((x) == WSAENOTCONN)
|
|
#else
|
|
#define sockerrno errno
|
|
#define sockstrerror(x) strerror(x)
|
|
#define sockwouldblock(x) ((x) == EWOULDBLOCK || (x) == EINTR)
|
|
#define sockmsgsize(x) ((x) == EMSGSIZE)
|
|
#define sockinprogress(x) ((x) == EINPROGRESS)
|
|
#define sockinuse(x) ((x) == EADDRINUSE)
|
|
#define socknotconn(x) ((x) == ENOTCONN)
|
|
#endif
|
|
|
|
extern unsigned int bitfield_to_int(const void *bitfield, size_t size);
|
|
|
|
extern bool check_id(const char *);
|
|
extern bool check_netname(const char *, bool strict);
|
|
char *replace_name(const char *name);
|
|
|
|
#endif /* __TINC_UTILS_H__ */
|