projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Convert bitfields to integers in a safe way.
[tinc]
/
lib
/
utils.c
diff --git
a/lib/utils.c
b/lib/utils.c
index
2e40ef5
..
02b7b34
100644
(file)
--- a/
lib/utils.c
+++ b/
lib/utils.c
@@
-1,7
+1,7
@@
/*
utils.c -- gathering of some stupid small functions
/*
utils.c -- gathering of some stupid small functions
- Copyright (C) 1999-200
3
Ivo Timmermans <zarq@iname.com>
- 2000-200
3 Guus Sliepen <guus@sliepen.eu
.org>
+ Copyright (C) 1999-200
5
Ivo Timmermans <zarq@iname.com>
+ 2000-200
6 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
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
@@
-29,7
+29,7
@@
volatile char (*cp_file[]) = {"?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
volatile int cp_index = 0;
#endif
volatile int cp_index = 0;
#endif
-c
har *hexadecimals
= "0123456789ABCDEF";
+c
onst char hexadecimals[]
= "0123456789ABCDEF";
int charhex2bin(char c)
{
int charhex2bin(char c)
{
@@
-85,7
+85,7
@@
void cp_trace()
#include <w32api/windows.h>
#endif
#include <w32api/windows.h>
#endif
-char *winerror(int err) {
+c
onst c
har *winerror(int err) {
static char buf[1024], *newline;
if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
static char buf[1024], *newline;
if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
@@
-100,3
+100,10
@@
char *winerror(int err) {
}
#endif
}
#endif
+unsigned int bitfield_to_int(void *bitfield, size_t size) {
+ unsigned int value = 0;
+ if(size > sizeof value)
+ size = sizeof value;
+ memcpy(&value, bitfield, size);
+ return value;
+}