@ -1,28 +0,0 @@ | |||||
diff --git a/lib/accelerated/x86/x86-common.h b/lib/accelerated/x86/x86-common.h | |||||
index 03fc8de..647c7d6 100644 | |||||
--- a/lib/accelerated/x86/x86-common.h | |||||
+++ b/lib/accelerated/x86/x86-common.h | |||||
@@ -29,11 +29,13 @@ extern unsigned int _gnutls_x86_cpuid_s[4]; | |||||
void gnutls_cpuid(unsigned int func, unsigned int *ax, unsigned int *bx, | |||||
unsigned int *cx, unsigned int *dx); | |||||
-#ifdef ASM_X86_32 | |||||
+# ifdef ASM_X86_32 | |||||
unsigned int gnutls_have_cpuid(void); | |||||
-#else | |||||
-#define gnutls_have_cpuid() 1 | |||||
-#endif /* ASM_X86_32 */ | |||||
+# else | |||||
+# define gnutls_have_cpuid() 1 | |||||
+# endif /* ASM_X86_32 */ | |||||
+ | |||||
+#endif | |||||
#define NN_HASH(name, update_func, digest_func, NAME) { \ | |||||
#name, \ | |||||
@@ -44,5 +46,3 @@ unsigned int gnutls_have_cpuid(void); | |||||
(nettle_hash_update_func *) update_func, \ | |||||
(nettle_hash_digest_func *) digest_func \ | |||||
} | |||||
- | |||||
-#endif |
@ -1,98 +0,0 @@ | |||||
# | |||||
# Copyright (C) 2006-2014 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=gsm | |||||
PKG_VERSION:=1.0.13 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||||
PKG_SOURCE_URL:=http://user.cs.tu-berlin.de/~jutta/gsm/ | |||||
PKG_MD5SUM:=c1ba392ce61dc4aff1c29ea4e92f6df4 | |||||
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net> | |||||
PKG_LICENSE:=FREE | |||||
PKG_LICENSE_FILES:=COPYRIGHT | |||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-1.0-pl13 | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/gsm/Default | |||||
TITLE:=GSM transcoding | |||||
URL:=http://user.cs.tu-berlin.de/~jutta/toast.html | |||||
endef | |||||
define Package/gsm/description/Default | |||||
An implementation of the European GSM 06.10 provisional standard | |||||
for full-rate speech transcoding, prI-ETS 300 036, which uses | |||||
RPE/LTP (residual pulse excitation/long term prediction) coding | |||||
at 13 kbit/s. | |||||
endef | |||||
define Package/libgsm | |||||
$(call Package/gsm/Default) | |||||
SECTION:=libs | |||||
CATEGORY:=Libraries | |||||
TITLE+= library | |||||
endef | |||||
define Package/libgsm/description | |||||
$(call Package/gsm/description/Default) | |||||
This package contains a shared GSM transcoding library, used by other | |||||
programs. | |||||
endef | |||||
define Package/gsm-utils | |||||
$(call Package/gsm/Default) | |||||
SECTION:=utils | |||||
CATEGORY:=Utilities | |||||
DEPENDS:=+libgsm | |||||
TITLE+= utilities | |||||
endef | |||||
define Package/gsm-utils/description | |||||
$(call Package/gsm/description/Default) | |||||
This package contains GSM transcoding utilities. | |||||
endef | |||||
define Build/Configure | |||||
endef | |||||
TARGET_CFLAGS += $(FPIC) | |||||
define Build/Compile | |||||
$(MAKE) -C $(PKG_BUILD_DIR) \ | |||||
$(TARGET_CONFIGURE_OPTS) \ | |||||
LD="$(TARGET_CC)" \ | |||||
COPTS="$(TARGET_CFLAGS)" \ | |||||
INSTALL_ROOT="$(PKG_INSTALL_DIR)" \ | |||||
all install | |||||
endef | |||||
define Package/libgsm/install | |||||
$(INSTALL_DIR) $(1)/usr/lib | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgsm.so.* $(1)/usr/lib/ | |||||
endef | |||||
define Package/gsm-utils/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/bin/toast $(1)/usr/bin/ | |||||
(cd $(1)/usr/bin; ln -sf toast untoast; ln -sf toast tcat) | |||||
endef | |||||
define Build/InstallDev | |||||
$(INSTALL_DIR) $(1)/usr/include/gsm | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/include/gsm.h $(1)/usr/include/gsm/ | |||||
$(INSTALL_DIR) $(1)/usr/lib | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgsm.{a,so*} $(1)/usr/lib/ | |||||
endef | |||||
$(eval $(call BuildPackage,libgsm)) | |||||
$(eval $(call BuildPackage,gsm-utils)) |
@ -1,428 +0,0 @@ | |||||
--- a/Makefile | |||||
+++ b/Makefile | |||||
@@ -8,10 +8,12 @@ SASR = -DSASR | |||||
######### Define SASR if >> is a signed arithmetic shift (-1 >> 1 == -1) | |||||
# MULHACK = -DUSE_FLOAT_MUL | |||||
+MULHACK = | |||||
######### Define this if your host multiplies floats faster than integers, | |||||
######### e.g. on a SPARCstation. | |||||
# FAST = -DFAST | |||||
+FAST = | |||||
######### Define together with USE_FLOAT_MUL to enable the GSM library's | |||||
######### approximation option for incorrect, but good-enough results. | |||||
@@ -22,8 +24,8 @@ LTP_CUT = | |||||
######### both integer and floating point multiplications. | |||||
######### This flag is still in the experimental stage. | |||||
-WAV49 = -DWAV49 | |||||
-# WAV49 = | |||||
+# WAV49 = -DWAV49 | |||||
+WAV49 = | |||||
######### Define to enable the GSM library's option to pack GSM frames | |||||
######### in the style used by the WAV #49 format. If you want to write | |||||
######### a tool that produces .WAV files which contain GSM-encoded data, | |||||
@@ -44,7 +46,8 @@ WAV49 = -DWAV49 | |||||
# CCFLAGS = -c -O | |||||
CC = gcc -ansi -pedantic | |||||
-CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1 | |||||
+COPTS = -O2 | |||||
+CCFLAGS = -c $(COPTS) -DNeedFunctionPrototypes=1 | |||||
LD = $(CC) | |||||
@@ -78,10 +81,10 @@ INSTALL_ROOT = | |||||
# Leave GSM_INSTALL_ROOT empty to not install the GSM library outside of | |||||
# this directory. | |||||
-GSM_INSTALL_ROOT = $(INSTALL_ROOT) | |||||
+GSM_INSTALL_ROOT = $(INSTALL_ROOT)/usr | |||||
GSM_INSTALL_LIB = $(GSM_INSTALL_ROOT)/lib | |||||
-GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc | |||||
-GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/man/man3 | |||||
+GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/include | |||||
+GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/share/man/man3 | |||||
# Where do you want to install the toast binaries and their manpage? | |||||
@@ -89,14 +92,14 @@ GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/ma | |||||
# Leave TOAST_INSTALL_ROOT empty to not install the toast binaries outside | |||||
# of this directory. | |||||
-TOAST_INSTALL_ROOT = $(INSTALL_ROOT) | |||||
+TOAST_INSTALL_ROOT = $(INSTALL_ROOT)/usr | |||||
TOAST_INSTALL_BIN = $(TOAST_INSTALL_ROOT)/bin | |||||
-TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1 | |||||
+TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/share/man/man1 | |||||
# Other tools | |||||
SHELL = /bin/sh | |||||
-LN = ln | |||||
+LN = ln -s | |||||
BASENAME = basename | |||||
AR = ar | |||||
ARFLAGS = cr | |||||
@@ -126,7 +129,7 @@ INC = $(ROOT)/inc | |||||
# Flags | |||||
-# DEBUG = -DNDEBUG | |||||
+DEBUG = -DNDEBUG | |||||
######### Remove -DNDEBUG to enable assertions. | |||||
CFLAGS = $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \ | |||||
@@ -140,6 +143,7 @@ LFLAGS = $(LDFLAGS) $(LDINC) | |||||
# Targets | |||||
LIBGSM = $(LIB)/libgsm.a | |||||
+LIBGSMSO= $(LIB)/libgsm.so | |||||
TOAST = $(BIN)/toast | |||||
UNTOAST = $(BIN)/untoast | |||||
@@ -258,6 +262,9 @@ STUFF = ChangeLog \ | |||||
GSM_INSTALL_TARGETS = \ | |||||
$(GSM_INSTALL_LIB)/libgsm.a \ | |||||
+ $(GSM_INSTALL_LIB)/libgsm.so \ | |||||
+ $(GSM_INSTALL_LIB)/libgsm.so.1 \ | |||||
+ $(GSM_INSTALL_LIB)/libgsm.so.1.0.10 \ | |||||
$(GSM_INSTALL_INC)/gsm.h \ | |||||
$(GSM_INSTALL_MAN)/gsm.3 \ | |||||
$(GSM_INSTALL_MAN)/gsm_explode.3 \ | |||||
@@ -279,7 +286,7 @@ TOAST_INSTALL_TARGETS = \ | |||||
# Target rules | |||||
-all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST) | |||||
+all: $(LIBGSM) $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST) | |||||
@-echo $(ROOT): Done. | |||||
tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result | |||||
@@ -299,6 +306,11 @@ install: toastinstall gsminstall | |||||
# The basic API: libgsm | |||||
+$(LIBGSMSO): $(LIB) $(GSM_OBJECTS) | |||||
+ $(LD) -o $@.1.0.10 -shared -Xlinker -soname -Xlinker libgsm.so.1 $(GSM_OBJECTS) -lc | |||||
+ ln -fs libgsm.so.1.0.10 lib/libgsm.so.1 | |||||
+ ln -fs libgsm.so.1.0.10 lib/libgsm.so | |||||
+ | |||||
$(LIBGSM): $(LIB) $(GSM_OBJECTS) | |||||
-rm $(RMFLAGS) $(LIBGSM) | |||||
$(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS) | |||||
@@ -308,15 +320,15 @@ $(LIBGSM): $(LIB) $(GSM_OBJECTS) | |||||
# Toast, Untoast and Tcat -- the compress-like frontends to gsm. | |||||
$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM) | |||||
- $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB) | |||||
+ $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB) | |||||
$(UNTOAST): $(BIN) $(TOAST) | |||||
-rm $(RMFLAGS) $(UNTOAST) | |||||
- $(LN) $(TOAST) $(UNTOAST) | |||||
+ $(LN) toast $(UNTOAST) | |||||
$(TCAT): $(BIN) $(TOAST) | |||||
-rm $(RMFLAGS) $(TCAT) | |||||
- $(LN) $(TOAST) $(TCAT) | |||||
+ $(LN) toast $(TCAT) | |||||
# The local bin and lib directories | |||||
@@ -351,53 +363,66 @@ toastuninstall: | |||||
fi | |||||
$(TOAST_INSTALL_BIN)/toast: $(TOAST) | |||||
- -rm $@ | |||||
- cp $(TOAST) $@ | |||||
+ mkdir -p $(TOAST_INSTALL_BIN) | |||||
+ cp -f $(TOAST) $@ | |||||
chmod 755 $@ | |||||
$(TOAST_INSTALL_BIN)/untoast: $(TOAST_INSTALL_BIN)/toast | |||||
- -rm $@ | |||||
- ln $? $@ | |||||
+ mkdir -p $(TOAST_INSTALL_BIN) | |||||
+ ln -sf $? $@ | |||||
$(TOAST_INSTALL_BIN)/tcat: $(TOAST_INSTALL_BIN)/toast | |||||
- -rm $@ | |||||
- ln $? $@ | |||||
+ mkdir -p $(TOAST_INSTALL_BIN) | |||||
+ ln -sf $? $@ | |||||
$(TOAST_INSTALL_MAN)/toast.1: $(MAN)/toast.1 | |||||
- -rm $@ | |||||
- cp $? $@ | |||||
+ mkdir -p $(TOAST_INSTALL_MAN) | |||||
+ cp -f $? $@ | |||||
chmod 444 $@ | |||||
$(GSM_INSTALL_MAN)/gsm.3: $(MAN)/gsm.3 | |||||
- -rm $@ | |||||
- cp $? $@ | |||||
+ mkdir -p $(GSM_INSTALL_MAN) | |||||
+ cp -f $? $@ | |||||
chmod 444 $@ | |||||
$(GSM_INSTALL_MAN)/gsm_option.3: $(MAN)/gsm_option.3 | |||||
- -rm $@ | |||||
- cp $? $@ | |||||
+ mkdir -p $(GSM_INSTALL_MAN) | |||||
+ cp -f $? $@ | |||||
chmod 444 $@ | |||||
$(GSM_INSTALL_MAN)/gsm_explode.3: $(MAN)/gsm_explode.3 | |||||
- -rm $@ | |||||
- cp $? $@ | |||||
+ mkdir -p $(GSM_INSTALL_MAN) | |||||
+ cp -f $? $@ | |||||
chmod 444 $@ | |||||
$(GSM_INSTALL_MAN)/gsm_print.3: $(MAN)/gsm_print.3 | |||||
- -rm $@ | |||||
- cp $? $@ | |||||
+ mkdir -p $(GSM_INSTALL_MAN) | |||||
+ cp -f $? $@ | |||||
chmod 444 $@ | |||||
$(GSM_INSTALL_INC)/gsm.h: $(INC)/gsm.h | |||||
- -rm $@ | |||||
- cp $? $@ | |||||
+ mkdir -p $(GSM_INSTALL_INC) | |||||
+ cp -f $? $@ | |||||
chmod 444 $@ | |||||
$(GSM_INSTALL_LIB)/libgsm.a: $(LIBGSM) | |||||
- -rm $@ | |||||
- cp $? $@ | |||||
+ mkdir -p $(GSM_INSTALL_LIB) | |||||
+ cp -f $? $@ | |||||
chmod 444 $@ | |||||
+$(GSM_INSTALL_LIB)/libgsm.so: $(LIBGSMSO) | |||||
+ mkdir -p $(GSM_INSTALL_LIB) | |||||
+ cp -f $? $@ | |||||
+ | |||||
+$(GSM_INSTALL_LIB)/libgsm.so.1: $(LIBGSMSO) | |||||
+ mkdir -p $(GSM_INSTALL_LIB) | |||||
+ cp -f $? $@ | |||||
+ | |||||
+$(GSM_INSTALL_LIB)/libgsm.so.1.0.10: $(LIBGSMSO) | |||||
+ mkdir -p $(GSM_INSTALL_LIB) | |||||
+ cp -f $? $@ | |||||
+ chmod 755 $@ | |||||
+ | |||||
# Distribution | |||||
@@ -426,7 +451,9 @@ semi-clean: | |||||
clean: semi-clean | |||||
-rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \ | |||||
- $(TOAST) $(TCAT) $(UNTOAST) \ | |||||
+ $(LIBGSMSO) $(LIB)/libgsm.so.1.0.10 \ | |||||
+ $(LIB)libgsm.so.1 \ | |||||
+ $(TOAST) $(TCAT) $(UNTOAST) \ | |||||
$(ROOT)/gsm-1.0.tar.Z | |||||
--- a/inc/config.h | |||||
+++ b/inc/config.h | |||||
@@ -9,8 +9,8 @@ | |||||
#ifndef CONFIG_H | |||||
#define CONFIG_H | |||||
-/*efine SIGHANDLER_T int /* signal handlers are void */ | |||||
-/*efine HAS_SYSV_SIGNAL 1 /* sigs not blocked/reset? */ | |||||
+/*efine SIGHANDLER_T int *//* signal handlers are void */ | |||||
+/*efine HAS_SYSV_SIGNAL 1 *//* sigs not blocked/reset? */ | |||||
#define HAS_STDLIB_H 1 /* /usr/include/stdlib.h */ | |||||
#define HAS_LIMITS_H 1 /* /usr/include/limits.h */ | |||||
@@ -22,16 +22,16 @@ | |||||
#define HAS_CHMOD 1 /* chmod syscall */ | |||||
#define HAS_FCHOWN 1 /* fchown syscall */ | |||||
#define HAS_CHOWN 1 /* chown syscall */ | |||||
-/*efine HAS__FSETMODE 1 /* _fsetmode -- set file mode */ | |||||
+/*efine HAS__FSETMODE 1 *//* _fsetmode -- set file mode */ | |||||
#define HAS_STRING_H 1 /* /usr/include/string.h */ | |||||
-/*efine HAS_STRINGS_H 1 /* /usr/include/strings.h */ | |||||
+/*efine HAS_STRINGS_H 1 *//* /usr/include/strings.h */ | |||||
#define HAS_UNISTD_H 1 /* /usr/include/unistd.h */ | |||||
#define HAS_UTIME 1 /* POSIX utime(path, times) */ | |||||
-/*efine HAS_UTIMES 1 /* use utimes() syscall instead */ | |||||
+/*efine HAS_UTIMES 1 *//* use utimes() syscall instead */ | |||||
#define HAS_UTIME_H 1 /* UTIME header file */ | |||||
#define HAS_UTIMBUF 1 /* struct utimbuf */ | |||||
-/*efine HAS_UTIMEUSEC 1 /* microseconds in utimbuf? */ | |||||
+/*efine HAS_UTIMEUSEC 1 *//* microseconds in utimbuf? */ | |||||
#endif /* CONFIG_H */ | |||||
--- a/inc/gsm.h | |||||
+++ b/inc/gsm.h | |||||
@@ -54,6 +54,10 @@ typedef gsm_byte gsm_frame[33]; /* 33 | |||||
#define GSM_OPT_FRAME_INDEX 5 | |||||
#define GSM_OPT_FRAME_CHAIN 6 | |||||
+#ifdef __cplusplus | |||||
+extern "C" { | |||||
+#endif | |||||
+ | |||||
extern gsm gsm_create GSM_P((void)); | |||||
extern void gsm_destroy GSM_P((gsm)); | |||||
@@ -66,6 +70,10 @@ extern int gsm_decode GSM_P((gsm, gsm_ | |||||
extern int gsm_explode GSM_P((gsm, gsm_byte *, gsm_signal *)); | |||||
extern void gsm_implode GSM_P((gsm, gsm_signal *, gsm_byte *)); | |||||
+#ifdef __cplusplus | |||||
+} | |||||
+#endif | |||||
+ | |||||
#undef GSM_P | |||||
#endif /* GSM_H */ | |||||
--- a/inc/toast.h | |||||
+++ b/inc/toast.h | |||||
@@ -16,11 +16,12 @@ | |||||
#include <stdio.h> | |||||
#include <ctype.h> | |||||
+#include <pthread.h> | |||||
#include <signal.h> | |||||
#include <errno.h> | |||||
-#ifndef HAS_ERRNO_DECL | |||||
- extern int errno; | |||||
+#ifndef errno | |||||
+ extern int errno; | |||||
#endif | |||||
#ifdef HAS_LIMITS_H | |||||
@@ -37,6 +38,10 @@ | |||||
# endif | |||||
#endif | |||||
+#ifdef HAS_STDIO_H | |||||
+# include <stdio.h> | |||||
+#endif | |||||
+ | |||||
#include "gsm.h" | |||||
#ifndef S_ISREG | |||||
--- a/src/code.c | |||||
+++ b/src/code.c | |||||
@@ -9,8 +9,8 @@ | |||||
#include "config.h" | |||||
-#ifdef HAS_STDLIB_H | |||||
-#include <stdlib.h> | |||||
+#ifdef HAS_STRING_H | |||||
+#include <string.h> | |||||
#else | |||||
# include "proto.h" | |||||
extern char * memcpy P((char *, char *, int)); | |||||
--- a/src/debug.c | |||||
+++ b/src/debug.c | |||||
@@ -49,7 +49,7 @@ void gsm_debug_longwords P4( (name, from | |||||
fprintf( stderr, "%s [%d .. %d]: ", name, from, to ); | |||||
while (from <= to) { | |||||
- fprintf(stderr, "%d ", ptr[ from ] ); | |||||
+ fprintf(stderr, "%ld ", ptr[ from ] ); | |||||
from++; | |||||
if (nprinted++ >= 7) { | |||||
nprinted = 0; | |||||
@@ -63,14 +63,14 @@ void gsm_debug_longword P2( (name, valu | |||||
char * name, | |||||
longword value ) | |||||
{ | |||||
- fprintf(stderr, "%s: %d\n", name, (long)value ); | |||||
+ fprintf(stderr, "%s: %ld\n", name, (long)value ); | |||||
} | |||||
void gsm_debug_word P2( (name, value), | |||||
char * name, | |||||
word value ) | |||||
{ | |||||
- fprintf(stderr, "%s: %d\n", name, (long)value); | |||||
+ fprintf(stderr, "%s: %ld\n", name, (long)value); | |||||
} | |||||
#endif | |||||
--- a/src/toast.c | |||||
+++ b/src/toast.c | |||||
@@ -251,8 +251,8 @@ static char * emalloc P1((len), size_t l | |||||
{ | |||||
char * s; | |||||
if (!(s = malloc(len))) { | |||||
- fprintf(stderr, "%s: failed to malloc %d bytes -- abort\n", | |||||
- progname, len); | |||||
+ fprintf(stderr, "%s: failed to malloc %ld bytes -- abort\n", | |||||
+ progname, (long) len); | |||||
onintr(); | |||||
exit(1); | |||||
} | |||||
@@ -270,7 +270,7 @@ static char* normalname P3((name, want, | |||||
maxlen = strlen(name) + 1 + strlen(want) + strlen(cut); | |||||
p = strcpy(emalloc(maxlen), name); | |||||
- if (s = suffix(p, cut)) strcpy(s, want); | |||||
+ if ((s = suffix(p, cut))) strcpy(s, want); | |||||
else if (*want && !suffix(p, want)) strcat(p, want); | |||||
return p; | |||||
@@ -386,7 +386,7 @@ static void update_times P0() | |||||
ut[0] = instat.st_atime; | |||||
ut[1] = instat.st_mtime; | |||||
- (void) utime(outname, ut); | |||||
+ (void) utime(outname, (struct utimbuf *)ut); | |||||
#endif /* UTIMBUF */ | |||||
} | |||||
@@ -416,7 +416,7 @@ static int okay_as_input P3((name,f,st), | |||||
} | |||||
if (st->st_nlink > 1 && !f_cat && !f_precious) { | |||||
fprintf(stderr, | |||||
- "%s: \"%s\" has %s other link%s -- unchanged.\n", | |||||
+ "%s: \"%s\" has %d other link%s -- unchanged.\n", | |||||
progname,name,st->st_nlink - 1,"s" + (st->st_nlink<=2)); | |||||
return 0; | |||||
} | |||||
@@ -585,8 +585,8 @@ static int process_decode P0() | |||||
if (cc != sizeof(s)) { | |||||
if (cc >= 0) fprintf(stderr, | |||||
- "%s: incomplete frame (%d byte%s missing) from %s\n", | |||||
- progname, sizeof(s) - cc, | |||||
+ "%s: incomplete frame (%ld byte%s missing) from %s\n", | |||||
+ progname, (long) sizeof(s) - cc, | |||||
"s" + (sizeof(s) - cc == 1), | |||||
inname ? inname : "stdin" ); | |||||
gsm_destroy(r); | |||||
@@ -624,8 +624,6 @@ static int process_decode P0() | |||||
static int process P1((name), char * name) | |||||
{ | |||||
- int step = 0; | |||||
- | |||||
out = (FILE *)0; | |||||
in = (FILE *)0; | |||||
@@ -779,7 +777,6 @@ int main P2((ac, av), int ac, char **av) | |||||
case 'h': help(); exit(0); | |||||
default: | |||||
- usage: | |||||
fprintf(stderr, | |||||
"Usage: %s [-fcpdhvuaslFC] [files...] (-h for help)\n", | |||||
progname); |
@ -0,0 +1,31 @@ | |||||
Index: tiff-4.0.3/tools/ppm2tiff.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/ppm2tiff.c 2013-06-23 10:36:50.779629492 -0400 | |||||
+++ tiff-4.0.3/tools/ppm2tiff.c 2013-06-23 10:36:50.775629494 -0400 | |||||
@@ -89,6 +89,7 @@ | |||||
int c; | |||||
extern int optind; | |||||
extern char* optarg; | |||||
+ tmsize_t scanline_size; | |||||
if (argc < 2) { | |||||
fprintf(stderr, "%s: Too few arguments\n", argv[0]); | |||||
@@ -237,8 +238,16 @@ | |||||
} | |||||
if (TIFFScanlineSize(out) > linebytes) | |||||
buf = (unsigned char *)_TIFFmalloc(linebytes); | |||||
- else | |||||
- buf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out)); | |||||
+ else { | |||||
+ scanline_size = TIFFScanlineSize(out); | |||||
+ if (scanline_size != 0) | |||||
+ buf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out)); | |||||
+ else { | |||||
+ fprintf(stderr, "%s: scanline size overflow\n",infile); | |||||
+ (void) TIFFClose(out); | |||||
+ exit(-2); | |||||
+ } | |||||
+ } | |||||
if (resolution > 0) { | |||||
TIFFSetField(out, TIFFTAG_XRESOLUTION, resolution); | |||||
TIFFSetField(out, TIFFTAG_YRESOLUTION, resolution); |
@ -0,0 +1,146 @@ | |||||
Index: tiff-4.0.3/tools/tiff2pdf.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-06-23 10:36:50.979629486 -0400 | |||||
+++ tiff-4.0.3/tools/tiff2pdf.c 2013-06-23 10:36:50.975629486 -0400 | |||||
@@ -3341,33 +3341,56 @@ | |||||
uint32 height){ | |||||
tsize_t i=0; | |||||
- uint16 ri =0; | |||||
- uint16 v_samp=1; | |||||
- uint16 h_samp=1; | |||||
- int j=0; | |||||
- | |||||
- i++; | |||||
- | |||||
- while(i<(*striplength)){ | |||||
+ | |||||
+ while (i < *striplength) { | |||||
+ tsize_t datalen; | |||||
+ uint16 ri; | |||||
+ uint16 v_samp; | |||||
+ uint16 h_samp; | |||||
+ int j; | |||||
+ int ncomp; | |||||
+ | |||||
+ /* marker header: one or more FFs */ | |||||
+ if (strip[i] != 0xff) | |||||
+ return(0); | |||||
+ i++; | |||||
+ while (i < *striplength && strip[i] == 0xff) | |||||
+ i++; | |||||
+ if (i >= *striplength) | |||||
+ return(0); | |||||
+ /* SOI is the only pre-SOS marker without a length word */ | |||||
+ if (strip[i] == 0xd8) | |||||
+ datalen = 0; | |||||
+ else { | |||||
+ if ((*striplength - i) <= 2) | |||||
+ return(0); | |||||
+ datalen = (strip[i+1] << 8) | strip[i+2]; | |||||
+ if (datalen < 2 || datalen >= (*striplength - i)) | |||||
+ return(0); | |||||
+ } | |||||
switch( strip[i] ){ | |||||
- case 0xd8: | |||||
- /* SOI - start of image */ | |||||
+ case 0xd8: /* SOI - start of image */ | |||||
_TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), 2); | |||||
*bufferoffset+=2; | |||||
- i+=2; | |||||
break; | |||||
- case 0xc0: | |||||
- case 0xc1: | |||||
- case 0xc3: | |||||
- case 0xc9: | |||||
- case 0xca: | |||||
+ case 0xc0: /* SOF0 */ | |||||
+ case 0xc1: /* SOF1 */ | |||||
+ case 0xc3: /* SOF3 */ | |||||
+ case 0xc9: /* SOF9 */ | |||||
+ case 0xca: /* SOF10 */ | |||||
if(no==0){ | |||||
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2); | |||||
- for(j=0;j<buffer[*bufferoffset+9];j++){ | |||||
- if( (buffer[*bufferoffset+11+(2*j)]>>4) > h_samp) | |||||
- h_samp = (buffer[*bufferoffset+11+(2*j)]>>4); | |||||
- if( (buffer[*bufferoffset+11+(2*j)] & 0x0f) > v_samp) | |||||
- v_samp = (buffer[*bufferoffset+11+(2*j)] & 0x0f); | |||||
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2); | |||||
+ ncomp = buffer[*bufferoffset+9]; | |||||
+ if (ncomp < 1 || ncomp > 4) | |||||
+ return(0); | |||||
+ v_samp=1; | |||||
+ h_samp=1; | |||||
+ for(j=0;j<ncomp;j++){ | |||||
+ uint16 samp = buffer[*bufferoffset+11+(3*j)]; | |||||
+ if( (samp>>4) > h_samp) | |||||
+ h_samp = (samp>>4); | |||||
+ if( (samp & 0x0f) > v_samp) | |||||
+ v_samp = (samp & 0x0f); | |||||
} | |||||
v_samp*=8; | |||||
h_samp*=8; | |||||
@@ -3381,45 +3404,43 @@ | |||||
(unsigned char) ((height>>8) & 0xff); | |||||
buffer[*bufferoffset+6]= | |||||
(unsigned char) (height & 0xff); | |||||
- *bufferoffset+=strip[i+2]+2; | |||||
- i+=strip[i+2]+2; | |||||
- | |||||
+ *bufferoffset+=datalen+2; | |||||
+ /* insert a DRI marker */ | |||||
buffer[(*bufferoffset)++]=0xff; | |||||
buffer[(*bufferoffset)++]=0xdd; | |||||
buffer[(*bufferoffset)++]=0x00; | |||||
buffer[(*bufferoffset)++]=0x04; | |||||
buffer[(*bufferoffset)++]=(ri >> 8) & 0xff; | |||||
buffer[(*bufferoffset)++]= ri & 0xff; | |||||
- } else { | |||||
- i+=strip[i+2]+2; | |||||
} | |||||
break; | |||||
- case 0xc4: | |||||
- case 0xdb: | |||||
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2); | |||||
- *bufferoffset+=strip[i+2]+2; | |||||
- i+=strip[i+2]+2; | |||||
+ case 0xc4: /* DHT */ | |||||
+ case 0xdb: /* DQT */ | |||||
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2); | |||||
+ *bufferoffset+=datalen+2; | |||||
break; | |||||
- case 0xda: | |||||
+ case 0xda: /* SOS */ | |||||
if(no==0){ | |||||
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2); | |||||
- *bufferoffset+=strip[i+2]+2; | |||||
- i+=strip[i+2]+2; | |||||
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2); | |||||
+ *bufferoffset+=datalen+2; | |||||
} else { | |||||
buffer[(*bufferoffset)++]=0xff; | |||||
buffer[(*bufferoffset)++]= | |||||
(unsigned char)(0xd0 | ((no-1)%8)); | |||||
- i+=strip[i+2]+2; | |||||
} | |||||
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), (*striplength)-i-1); | |||||
- *bufferoffset+=(*striplength)-i-1; | |||||
+ i += datalen + 1; | |||||
+ /* copy remainder of strip */ | |||||
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i]), *striplength - i); | |||||
+ *bufferoffset+= *striplength - i; | |||||
return(1); | |||||
default: | |||||
- i+=strip[i+2]+2; | |||||
+ /* ignore any other marker */ | |||||
+ break; | |||||
} | |||||
+ i += datalen + 1; | |||||
} | |||||
- | |||||
+ /* failed to find SOS marker */ | |||||
return(0); | |||||
} | |||||
#endif |
@ -0,0 +1,768 @@ | |||||
Index: tiff-4.0.3/contrib/dbs/xtiff/xtiff.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/contrib/dbs/xtiff/xtiff.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/contrib/dbs/xtiff/xtiff.c 2013-06-23 10:36:51.147629484 -0400 | |||||
@@ -512,9 +512,9 @@ | |||||
Arg args[1]; | |||||
if (tfMultiPage) | |||||
- sprintf(buffer, "%s - page %d", fileName, tfDirectory); | |||||
+ snprintf(buffer, sizeof(buffer), "%s - page %d", fileName, tfDirectory); | |||||
else | |||||
- strcpy(buffer, fileName); | |||||
+ snprintf(buffer, sizeof(buffer), "%s", fileName); | |||||
XtSetArg(args[0], XtNlabel, buffer); | |||||
XtSetValues(labelWidget, args, 1); | |||||
} | |||||
Index: tiff-4.0.3/libtiff/tif_dirinfo.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/libtiff/tif_dirinfo.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/libtiff/tif_dirinfo.c 2013-06-23 10:36:51.147629484 -0400 | |||||
@@ -711,7 +711,7 @@ | |||||
* note that this name is a special sign to TIFFClose() and | |||||
* _TIFFSetupFields() to free the field | |||||
*/ | |||||
- sprintf(fld->field_name, "Tag %d", (int) tag); | |||||
+ snprintf(fld->field_name, 32, "Tag %d", (int) tag); | |||||
return fld; | |||||
} | |||||
Index: tiff-4.0.3/libtiff/tif_codec.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/libtiff/tif_codec.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/libtiff/tif_codec.c 2013-06-23 10:36:51.151629482 -0400 | |||||
@@ -108,7 +108,8 @@ | |||||
const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); | |||||
char compression_code[20]; | |||||
- sprintf( compression_code, "%d", tif->tif_dir.td_compression ); | |||||
+ snprintf(compression_code, sizeof(compression_code), "%d", | |||||
+ tif->tif_dir.td_compression ); | |||||
TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | |||||
"%s compression support is not configured", | |||||
c ? c->name : compression_code ); | |||||
Index: tiff-4.0.3/tools/tiffdither.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/tiffdither.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/tools/tiffdither.c 2013-06-23 10:36:51.151629482 -0400 | |||||
@@ -260,7 +260,7 @@ | |||||
TIFFSetField(out, TIFFTAG_FILLORDER, fillorder); | |||||
else | |||||
CopyField(TIFFTAG_FILLORDER, shortv); | |||||
- sprintf(thing, "Dithered B&W version of %s", argv[optind]); | |||||
+ snprintf(thing, sizeof(thing), "Dithered B&W version of %s", argv[optind]); | |||||
TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing); | |||||
CopyField(TIFFTAG_PHOTOMETRIC, shortv); | |||||
CopyField(TIFFTAG_ORIENTATION, shortv); | |||||
Index: tiff-4.0.3/tools/rgb2ycbcr.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/rgb2ycbcr.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/tools/rgb2ycbcr.c 2013-06-23 10:36:51.151629482 -0400 | |||||
@@ -332,7 +332,8 @@ | |||||
TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); | |||||
{ char buf[2048]; | |||||
char *cp = strrchr(TIFFFileName(in), '/'); | |||||
- sprintf(buf, "YCbCr conversion of %s", cp ? cp+1 : TIFFFileName(in)); | |||||
+ snprintf(buf, sizeof(buf), "YCbCr conversion of %s", | |||||
+ cp ? cp+1 : TIFFFileName(in)); | |||||
TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, buf); | |||||
} | |||||
TIFFSetField(out, TIFFTAG_SOFTWARE, TIFFGetVersion()); | |||||
Index: tiff-4.0.3/tools/tiff2pdf.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/tools/tiff2pdf.c 2013-06-23 10:36:51.151629482 -0400 | |||||
@@ -3630,7 +3630,9 @@ | |||||
char buffer[16]; | |||||
int buflen=0; | |||||
- buflen=sprintf(buffer, "%%PDF-%u.%u ", t2p->pdf_majorversion&0xff, t2p->pdf_minorversion&0xff); | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%%PDF-%u.%u ", | |||||
+ t2p->pdf_majorversion&0xff, | |||||
+ t2p->pdf_minorversion&0xff); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t)"\n%\342\343\317\323\n", 7); | |||||
@@ -3644,10 +3646,10 @@ | |||||
tsize_t t2p_write_pdf_obj_start(uint32 number, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)number); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen ); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 obj\n", 7); | |||||
@@ -3686,13 +3688,13 @@ | |||||
written += t2pWriteFile(output, (tdata_t) "/", 1); | |||||
for (i=0;i<namelen;i++){ | |||||
if ( ((unsigned char)name[i]) < 0x21){ | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
nextchar=1; | |||||
} | |||||
if ( ((unsigned char)name[i]) > 0x7E){ | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
nextchar=1; | |||||
@@ -3700,57 +3702,57 @@ | |||||
if (nextchar==0){ | |||||
switch (name[i]){ | |||||
case 0x23: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x25: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x28: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x29: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x2F: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x3C: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x3E: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x5B: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x5D: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x7B: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
case 0x7D: | |||||
- sprintf(buffer, "#%.2X", name[i]); | |||||
+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]); | |||||
buffer[sizeof(buffer) - 1] = '\0'; | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 3); | |||||
break; | |||||
@@ -3865,14 +3867,14 @@ | |||||
tsize_t t2p_write_pdf_stream_dict(tsize_t len, uint32 number, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
written += t2pWriteFile(output, (tdata_t) "/Length ", 8); | |||||
if(len!=0){ | |||||
written += t2p_write_pdf_stream_length(len, output); | |||||
} else { | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)number); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6); | |||||
} | |||||
@@ -3913,10 +3915,10 @@ | |||||
tsize_t t2p_write_pdf_stream_length(tsize_t len, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)len); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)len); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "\n", 1); | |||||
@@ -3930,7 +3932,7 @@ | |||||
tsize_t t2p_write_pdf_catalog(T2P* t2p, TIFF* output) | |||||
{ | |||||
tsize_t written = 0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen = 0; | |||||
written += t2pWriteFile(output, | |||||
@@ -3969,7 +3971,6 @@ | |||||
written += t2p_write_pdf_string(t2p->pdf_datetime, output); | |||||
} | |||||
written += t2pWriteFile(output, (tdata_t) "\n/Producer ", 11); | |||||
- _TIFFmemset((tdata_t)buffer, 0x00, sizeof(buffer)); | |||||
snprintf(buffer, sizeof(buffer), "libtiff / tiff2pdf - %d", TIFFLIB_VERSION); | |||||
written += t2p_write_pdf_string(buffer, output); | |||||
written += t2pWriteFile(output, (tdata_t) "\n", 1); | |||||
@@ -4110,7 +4111,7 @@ | |||||
{ | |||||
tsize_t written=0; | |||||
tdir_t i=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
int page=0; | |||||
@@ -4118,7 +4119,7 @@ | |||||
(tdata_t) "<< \n/Type /Pages \n/Kids [ ", 26); | |||||
page = t2p->pdf_pages+1; | |||||
for (i=0;i<t2p->tiff_pagecount;i++){ | |||||
- buflen=sprintf(buffer, "%d", page); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%d", page); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5); | |||||
if ( ((i+1)%8)==0 ) { | |||||
@@ -4133,8 +4134,7 @@ | |||||
} | |||||
} | |||||
written += t2pWriteFile(output, (tdata_t) "] \n/Count ", 10); | |||||
- _TIFFmemset(buffer, 0x00, 16); | |||||
- buflen=sprintf(buffer, "%d", t2p->tiff_pagecount); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%d", t2p->tiff_pagecount); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " \n>> \n", 6); | |||||
@@ -4149,28 +4149,28 @@ | |||||
unsigned int i=0; | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[256]; | |||||
int buflen=0; | |||||
written += t2pWriteFile(output, (tdata_t) "<<\n/Type /Page \n/Parent ", 24); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_pages); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_pages); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6); | |||||
written += t2pWriteFile(output, (tdata_t) "/MediaBox [", 11); | |||||
- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x1); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x1); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " ", 1); | |||||
- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y1); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y1); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " ", 1); | |||||
- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x2); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x2); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " ", 1); | |||||
- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y2); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y2); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "] \n", 3); | |||||
written += t2pWriteFile(output, (tdata_t) "/Contents ", 10); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)(object + 1)); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(object + 1)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6); | |||||
written += t2pWriteFile(output, (tdata_t) "/Resources << \n", 15); | |||||
@@ -4178,15 +4178,13 @@ | |||||
written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12); | |||||
for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount;i++){ | |||||
written += t2pWriteFile(output, (tdata_t) "/Im", 3); | |||||
- buflen = sprintf(buffer, "%u", t2p->pdf_page+1); | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "_", 1); | |||||
- buflen = sprintf(buffer, "%u", i+1); | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%u", i+1); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " ", 1); | |||||
- buflen = sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5); | |||||
@@ -4198,12 +4196,10 @@ | |||||
} else { | |||||
written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12); | |||||
written += t2pWriteFile(output, (tdata_t) "/Im", 3); | |||||
- buflen = sprintf(buffer, "%u", t2p->pdf_page+1); | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " ", 1); | |||||
- buflen = sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5); | |||||
@@ -4212,9 +4208,7 @@ | |||||
if(t2p->tiff_transferfunctioncount != 0) { | |||||
written += t2pWriteFile(output, (tdata_t) "/ExtGState <<", 13); | |||||
t2pWriteFile(output, (tdata_t) "/GS1 ", 5); | |||||
- buflen = sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)(object + 3)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5); | |||||
@@ -4587,7 +4581,7 @@ | |||||
if(t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount>0){ | |||||
for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount; i++){ | |||||
box=t2p->tiff_tiles[t2p->pdf_page].tiles_tiles[i].tile_box; | |||||
- buflen=sprintf(buffer, | |||||
+ buflen=snprintf(buffer, sizeof(buffer), | |||||
"q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d_%ld Do Q\n", | |||||
t2p->tiff_transferfunctioncount?"/GS1 gs ":"", | |||||
box.mat[0], | |||||
@@ -4602,7 +4596,7 @@ | |||||
} | |||||
} else { | |||||
box=t2p->pdf_imagebox; | |||||
- buflen=sprintf(buffer, | |||||
+ buflen=snprintf(buffer, sizeof(buffer), | |||||
"q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d Do Q\n", | |||||
t2p->tiff_transferfunctioncount?"/GS1 gs ":"", | |||||
box.mat[0], | |||||
@@ -4627,59 +4621,48 @@ | |||||
TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
written += t2p_write_pdf_stream_dict(0, t2p->pdf_xrefcount+1, output); | |||||
written += t2pWriteFile(output, | |||||
(tdata_t) "/Type /XObject \n/Subtype /Image \n/Name /Im", | |||||
42); | |||||
- buflen=sprintf(buffer, "%u", t2p->pdf_page+1); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
if(tile != 0){ | |||||
written += t2pWriteFile(output, (tdata_t) "_", 1); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)tile); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)tile); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
} | |||||
written += t2pWriteFile(output, (tdata_t) "\n/Width ", 8); | |||||
- _TIFFmemset((tdata_t)buffer, 0x00, 16); | |||||
if(tile==0){ | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_width); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_width); | |||||
} else { | |||||
if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){ | |||||
- buflen=sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth); | |||||
} else { | |||||
- buflen=sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth); | |||||
} | |||||
} | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "\n/Height ", 9); | |||||
- _TIFFmemset((tdata_t)buffer, 0x00, 16); | |||||
if(tile==0){ | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_length); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_length); | |||||
} else { | |||||
if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){ | |||||
- buflen=sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength); | |||||
} else { | |||||
- buflen=sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength); | |||||
} | |||||
} | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "\n/BitsPerComponent ", 19); | |||||
- _TIFFmemset((tdata_t)buffer, 0x00, 16); | |||||
- buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "\n/ColorSpace ", 13); | |||||
written += t2p_write_pdf_xobject_cs(t2p, output); | |||||
@@ -4723,11 +4706,10 @@ | |||||
t2p->pdf_colorspace ^= T2P_CS_PALETTE; | |||||
written += t2p_write_pdf_xobject_cs(t2p, output); | |||||
t2p->pdf_colorspace |= T2P_CS_PALETTE; | |||||
- buflen=sprintf(buffer, "%u", (0x0001 << t2p->tiff_bitspersample)-1 ); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%u", (0x0001 << t2p->tiff_bitspersample)-1 ); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " ", 1); | |||||
- _TIFFmemset(buffer, 0x00, 16); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_palettecs ); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_palettecs ); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ]\n", 7); | |||||
return(written); | |||||
@@ -4761,10 +4743,10 @@ | |||||
X_W /= Y_W; | |||||
Z_W /= Y_W; | |||||
Y_W = 1.0F; | |||||
- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "/Range ", 7); | |||||
- buflen=sprintf(buffer, "[%d %d %d %d] \n", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "[%d %d %d %d] \n", | |||||
t2p->pdf_labrange[0], | |||||
t2p->pdf_labrange[1], | |||||
t2p->pdf_labrange[2], | |||||
@@ -4780,26 +4762,26 @@ | |||||
tsize_t t2p_write_pdf_transfer(T2P* t2p, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
written += t2pWriteFile(output, (tdata_t) "<< /Type /ExtGState \n/TR ", 25); | |||||
if(t2p->tiff_transferfunctioncount == 1){ | |||||
- buflen=sprintf(buffer, "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)(t2p->pdf_xrefcount + 1)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5); | |||||
} else { | |||||
written += t2pWriteFile(output, (tdata_t) "[ ", 2); | |||||
- buflen=sprintf(buffer, "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)(t2p->pdf_xrefcount + 1)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5); | |||||
- buflen=sprintf(buffer, "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)(t2p->pdf_xrefcount + 2)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5); | |||||
- buflen=sprintf(buffer, "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)(t2p->pdf_xrefcount + 3)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R ", 5); | |||||
@@ -4821,7 +4803,7 @@ | |||||
written += t2pWriteFile(output, (tdata_t) "/FunctionType 0 \n", 17); | |||||
written += t2pWriteFile(output, (tdata_t) "/Domain [0.0 1.0] \n", 19); | |||||
written += t2pWriteFile(output, (tdata_t) "/Range [0.0 1.0] \n", 18); | |||||
- buflen=sprintf(buffer, "/Size [%u] \n", (1<<t2p->tiff_bitspersample)); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "/Size [%u] \n", (1<<t2p->tiff_bitspersample)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "/BitsPerSample 16 \n", 19); | |||||
written += t2p_write_pdf_stream_dict(((tsize_t)1)<<(t2p->tiff_bitspersample+1), 0, output); | |||||
@@ -4848,7 +4830,7 @@ | |||||
tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[128]; | |||||
+ char buffer[256]; | |||||
int buflen=0; | |||||
float X_W=0.0; | |||||
@@ -4916,16 +4898,16 @@ | |||||
written += t2pWriteFile(output, (tdata_t) "<< \n", 4); | |||||
if(t2p->pdf_colorspace & T2P_CS_CALGRAY){ | |||||
written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12); | |||||
- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "/Gamma 2.2 \n", 12); | |||||
} | |||||
if(t2p->pdf_colorspace & T2P_CS_CALRGB){ | |||||
written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12); | |||||
- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "/Matrix ", 8); | |||||
- buflen=sprintf(buffer, "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n", | |||||
X_R, Y_R, Z_R, | |||||
X_G, Y_G, Z_G, | |||||
X_B, Y_B, Z_B); | |||||
@@ -4944,11 +4926,11 @@ | |||||
tsize_t t2p_write_pdf_xobject_icccs(T2P* t2p, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
written += t2pWriteFile(output, (tdata_t) "[/ICCBased ", 11); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_icccs); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_icccs); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R] \n", 7); | |||||
@@ -4958,11 +4940,11 @@ | |||||
tsize_t t2p_write_pdf_xobject_icccs_dict(T2P* t2p, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
written += t2pWriteFile(output, (tdata_t) "/N ", 3); | |||||
- buflen=sprintf(buffer, "%u \n", t2p->tiff_samplesperpixel); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%u \n", t2p->tiff_samplesperpixel); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) "/Alternate ", 11); | |||||
t2p->pdf_colorspace ^= T2P_CS_ICCBASED; | |||||
@@ -5027,7 +5009,7 @@ | |||||
tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[16]; | |||||
+ char buffer[32]; | |||||
int buflen=0; | |||||
if(t2p->pdf_compression==T2P_COMPRESS_NONE){ | |||||
@@ -5042,41 +5024,33 @@ | |||||
written += t2pWriteFile(output, (tdata_t) "<< /K -1 ", 9); | |||||
if(tile==0){ | |||||
written += t2pWriteFile(output, (tdata_t) "/Columns ", 9); | |||||
- buflen=sprintf(buffer, "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_width); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " /Rows ", 7); | |||||
- buflen=sprintf(buffer, "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_length); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
} else { | |||||
if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){ | |||||
written += t2pWriteFile(output, (tdata_t) "/Columns ", 9); | |||||
- buflen=sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
} else { | |||||
written += t2pWriteFile(output, (tdata_t) "/Columns ", 9); | |||||
- buflen=sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
} | |||||
if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){ | |||||
written += t2pWriteFile(output, (tdata_t) " /Rows ", 7); | |||||
- buflen=sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
} else { | |||||
written += t2pWriteFile(output, (tdata_t) " /Rows ", 7); | |||||
- buflen=sprintf( | |||||
- buffer, | |||||
- "%lu", | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
} | |||||
@@ -5103,21 +5077,17 @@ | |||||
if(t2p->pdf_compressionquality%100){ | |||||
written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13); | |||||
written += t2pWriteFile(output, (tdata_t) "<< /Predictor ", 14); | |||||
- _TIFFmemset(buffer, 0x00, 16); | |||||
- buflen=sprintf(buffer, "%u", t2p->pdf_compressionquality%100); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_compressionquality%100); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " /Columns ", 10); | |||||
- _TIFFmemset(buffer, 0x00, 16); | |||||
- buflen = sprintf(buffer, "%lu", | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%lu", | |||||
(unsigned long)t2p->tiff_width); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " /Colors ", 9); | |||||
- _TIFFmemset(buffer, 0x00, 16); | |||||
- buflen=sprintf(buffer, "%u", t2p->tiff_samplesperpixel); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_samplesperpixel); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " /BitsPerComponent ", 19); | |||||
- _TIFFmemset(buffer, 0x00, 16); | |||||
- buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) ">>\n", 3); | |||||
} | |||||
@@ -5137,16 +5107,16 @@ | |||||
tsize_t t2p_write_pdf_xreftable(T2P* t2p, TIFF* output){ | |||||
tsize_t written=0; | |||||
- char buffer[21]; | |||||
+ char buffer[64]; | |||||
int buflen=0; | |||||
uint32 i=0; | |||||
written += t2pWriteFile(output, (tdata_t) "xref\n0 ", 7); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount + 1)); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount + 1)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
written += t2pWriteFile(output, (tdata_t) " \n0000000000 65535 f \n", 22); | |||||
for (i=0;i<t2p->pdf_xrefcount;i++){ | |||||
- sprintf(buffer, "%.10lu 00000 n \n", | |||||
+ snprintf(buffer, sizeof(buffer), "%.10lu 00000 n \n", | |||||
(unsigned long)t2p->pdf_xrefoffsets[i]); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, 20); | |||||
} | |||||
@@ -5170,17 +5140,14 @@ | |||||
snprintf(t2p->pdf_fileid + i, 9, "%.8X", rand()); | |||||
written += t2pWriteFile(output, (tdata_t) "trailer\n<<\n/Size ", 17); | |||||
- buflen = sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount+1)); | |||||
+ buflen = snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount+1)); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
- _TIFFmemset(buffer, 0x00, 32); | |||||
written += t2pWriteFile(output, (tdata_t) "\n/Root ", 7); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_catalog); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_catalog); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
- _TIFFmemset(buffer, 0x00, 32); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R \n/Info ", 12); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_info); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_info); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
- _TIFFmemset(buffer, 0x00, 32); | |||||
written += t2pWriteFile(output, (tdata_t) " 0 R \n/ID[<", 11); | |||||
written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid, | |||||
sizeof(t2p->pdf_fileid) - 1); | |||||
@@ -5188,9 +5155,8 @@ | |||||
written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid, | |||||
sizeof(t2p->pdf_fileid) - 1); | |||||
written += t2pWriteFile(output, (tdata_t) ">]\n>>\nstartxref\n", 16); | |||||
- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_startxref); | |||||
+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_startxref); | |||||
written += t2pWriteFile(output, (tdata_t) buffer, buflen); | |||||
- _TIFFmemset(buffer, 0x00, 32); | |||||
written += t2pWriteFile(output, (tdata_t) "\n%%EOF\n", 7); | |||||
return(written); | |||||
Index: tiff-4.0.3/tools/tiff2ps.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/tiff2ps.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/tools/tiff2ps.c 2013-06-23 10:36:51.155629481 -0400 | |||||
@@ -1781,8 +1781,8 @@ | |||||
imageOp = "imagemask"; | |||||
(void)strcpy(im_x, "0"); | |||||
- (void)sprintf(im_y, "%lu", (long) h); | |||||
- (void)sprintf(im_h, "%lu", (long) h); | |||||
+ (void)snprintf(im_y, sizeof(im_y), "%lu", (long) h); | |||||
+ (void)snprintf(im_h, sizeof(im_h), "%lu", (long) h); | |||||
tile_width = w; | |||||
tile_height = h; | |||||
if (TIFFIsTiled(tif)) { | |||||
@@ -1803,7 +1803,7 @@ | |||||
} | |||||
if (tile_height < h) { | |||||
fputs("/im_y 0 def\n", fd); | |||||
- (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h); | |||||
+ (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h); | |||||
} | |||||
} else { | |||||
repeat_count = tf_numberstrips; | |||||
@@ -1815,7 +1815,7 @@ | |||||
fprintf(fd, "/im_h %lu def\n", | |||||
(unsigned long) tile_height); | |||||
(void)strcpy(im_h, "im_h"); | |||||
- (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h); | |||||
+ (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h); | |||||
} | |||||
} | |||||
Index: tiff-4.0.3/tools/tiffcrop.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/tiffcrop.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/tools/tiffcrop.c 2013-06-23 10:36:51.159629481 -0400 | |||||
@@ -2077,7 +2077,7 @@ | |||||
return 1; | |||||
} | |||||
- sprintf (filenum, "-%03d%s", findex, export_ext); | |||||
+ snprintf(filenum, sizeof(filenum), "-%03d%s", findex, export_ext); | |||||
filenum[14] = '\0'; | |||||
strncat (exportname, filenum, 15); | |||||
} | |||||
@@ -2230,8 +2230,8 @@ | |||||
/* dump.infilename is guaranteed to be NUL termimated and have 20 bytes | |||||
fewer than PATH_MAX */ | |||||
- memset (temp_filename, '\0', PATH_MAX + 1); | |||||
- sprintf (temp_filename, "%s-read-%03d.%s", dump.infilename, dump_images, | |||||
+ snprintf(temp_filename, sizeof(temp_filename), "%s-read-%03d.%s", | |||||
+ dump.infilename, dump_images, | |||||
(dump.format == DUMP_TEXT) ? "txt" : "raw"); | |||||
if ((dump.infile = fopen(temp_filename, dump.mode)) == NULL) | |||||
{ | |||||
@@ -2249,8 +2249,8 @@ | |||||
/* dump.outfilename is guaranteed to be NUL termimated and have 20 bytes | |||||
fewer than PATH_MAX */ | |||||
- memset (temp_filename, '\0', PATH_MAX + 1); | |||||
- sprintf (temp_filename, "%s-write-%03d.%s", dump.outfilename, dump_images, | |||||
+ snprintf(temp_filename, sizeof(temp_filename), "%s-write-%03d.%s", | |||||
+ dump.outfilename, dump_images, | |||||
(dump.format == DUMP_TEXT) ? "txt" : "raw"); | |||||
if ((dump.outfile = fopen(temp_filename, dump.mode)) == NULL) | |||||
{ | |||||
Index: tiff-4.0.3/tools/tiff2bw.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/tiff2bw.c 2013-06-23 10:36:51.163629483 -0400 | |||||
+++ tiff-4.0.3/tools/tiff2bw.c 2013-06-23 10:36:51.159629481 -0400 | |||||
@@ -205,7 +205,7 @@ | |||||
} | |||||
} | |||||
TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK); | |||||
- sprintf(thing, "B&W version of %s", argv[optind]); | |||||
+ snprintf(thing, sizeof(thing), "B&W version of %s", argv[optind]); | |||||
TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing); | |||||
TIFFSetField(out, TIFFTAG_SOFTWARE, "tiff2bw"); | |||||
outbuf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out)); |
@ -0,0 +1,17 @@ | |||||
Description: Buffer overflow in gif2tiff | |||||
Bug: http://bugzilla.maptools.org/show_bug.cgi?id=2450 | |||||
Bug-Debian: http://bugs.debian.org/719303 | |||||
Index: tiff-4.0.3/tools/gif2tiff.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/gif2tiff.c 2013-08-22 11:46:11.960846910 -0400 | |||||
+++ tiff-4.0.3/tools/gif2tiff.c 2013-08-22 11:46:11.956846910 -0400 | |||||
@@ -333,6 +333,8 @@ | |||||
int status = 1; | |||||
datasize = getc(infile); | |||||
+ if (datasize > 12) | |||||
+ return 0; | |||||
clear = 1 << datasize; | |||||
eoi = clear + 1; | |||||
avail = clear + 2; |
@ -0,0 +1,18 @@ | |||||
Description: use after free in tiff2pdf | |||||
Bug: http://bugzilla.maptools.org/show_bug.cgi?id=2449 | |||||
Bug-Debian: http://bugs.debian.org/719303 | |||||
Index: tiff-4.0.3/tools/tiff2pdf.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-08-22 11:46:37.292847242 -0400 | |||||
+++ tiff-4.0.3/tools/tiff2pdf.c 2013-08-22 11:46:37.292847242 -0400 | |||||
@@ -2461,7 +2461,8 @@ | |||||
(unsigned long) t2p->tiff_datasize, | |||||
TIFFFileName(input)); | |||||
t2p->t2p_error = T2P_ERR_ERROR; | |||||
- _TIFFfree(buffer); | |||||
+ _TIFFfree(buffer); | |||||
+ return(0); | |||||
} else { | |||||
buffer=samplebuffer; | |||||
t2p->tiff_datasize *= t2p->tiff_samplesperpixel; |
@ -0,0 +1,18 @@ | |||||
Description: OOB write in gif2tiff | |||||
Bug-Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=996468 | |||||
Index: tiff-4.0.3/tools/gif2tiff.c | |||||
=================================================================== | |||||
--- tiff-4.0.3.orig/tools/gif2tiff.c 2013-08-24 11:17:13.546447901 -0400 | |||||
+++ tiff-4.0.3/tools/gif2tiff.c 2013-08-24 11:17:13.546447901 -0400 | |||||
@@ -400,6 +400,10 @@ | |||||
} | |||||
if (oldcode == -1) { | |||||
+ if (code >= clear) { | |||||
+ fprintf(stderr, "bad input: code=%d is larger than clear=%d\n",code, clear); | |||||
+ return 0; | |||||
+ } | |||||
*(*fill)++ = suffix[code]; | |||||
firstchar = oldcode = code; | |||||
return 1; |
@ -0,0 +1,37 @@ | |||||
Index: tiff/tools/gif2tiff.c | |||||
=================================================================== | |||||
--- tiff.orig/tools/gif2tiff.c | |||||
+++ tiff/tools/gif2tiff.c | |||||
@@ -280,6 +280,10 @@ readgifimage(char* mode) | |||||
fprintf(stderr, "no colormap present for image\n"); | |||||
return (0); | |||||
} | |||||
+ if (width == 0 || height == 0) { | |||||
+ fprintf(stderr, "Invalid value of width or height\n"); | |||||
+ return(0); | |||||
+ } | |||||
if ((raster = (unsigned char*) _TIFFmalloc(width*height+EXTRAFUDGE)) == NULL) { | |||||
fprintf(stderr, "not enough memory for image\n"); | |||||
return (0); | |||||
@@ -404,6 +408,10 @@ process(register int code, unsigned char | |||||
fprintf(stderr, "bad input: code=%d is larger than clear=%d\n",code, clear); | |||||
return 0; | |||||
} | |||||
+ if (*fill >= raster + width*height) { | |||||
+ fprintf(stderr, "raster full before eoi code\n"); | |||||
+ return 0; | |||||
+ } | |||||
*(*fill)++ = suffix[code]; | |||||
firstchar = oldcode = code; | |||||
return 1; | |||||
@@ -434,6 +442,10 @@ process(register int code, unsigned char | |||||
} | |||||
oldcode = incode; | |||||
do { | |||||
+ if (*fill >= raster + width*height) { | |||||
+ fprintf(stderr, "raster full before eoi code\n"); | |||||
+ return 0; | |||||
+ } | |||||
*(*fill)++ = *--stackp; | |||||
} while (stackp > stack); | |||||
return 1; |
@ -0,0 +1,12 @@ | |||||
--- a/upnphttp.c | |||||
+++ b/upnphttp.c | |||||
@@ -1259,7 +1259,7 @@ | |||||
int try_sendfile = 1; | |||||
#endif | |||||
- while( offset < end_offset ) | |||||
+ while( offset <= end_offset ) | |||||
{ | |||||
#if HAVE_SENDFILE | |||||
if( try_sendfile ) | |||||
@ -0,0 +1,63 @@ | |||||
# | |||||
# Copyright (C) 2014 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=dhcpcd | |||||
PKG_VERSION:=6.4.3 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE_URL:=ftp://roy.marples.name/pub/dhcpcd \ | |||||
http://roy.marples.name/downloads/dhcpcd | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | |||||
PKG_MD5SUM:=b22005c131e7108ecf598b6a4ac091eb | |||||
PKG_LICENSE:=BSD-2c | |||||
PKG_LICENSE_FILES:= | |||||
PKG_MAINTAINER:=Roy Marples <roy@marples.name> | |||||
PKG_BUILD_PARALLEL:=1 | |||||
PKG_INSTALL:=1 | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/dhcpcd | |||||
SECTION:=net | |||||
CATEGORY:=Network | |||||
TITLE:=DHCPv4/IPv4LL/IPv6RS/DHCPv6 quad stack client | |||||
URL:=http://roy.marples.name/projects/dhcpcd | |||||
endef | |||||
define Package/dhcpcd/description | |||||
DHCPv4, IPv6RS and DHCPv6 client with IPv4LL support | |||||
dhcpcd is a one stop network management daemon which includes | |||||
* RFC compliant DHCPv4 and DHCPv6 clients | |||||
* DHCPv6 Prefix Delegation support | |||||
* IPv4LL (aka ZeroConf) support | |||||
* ARP address conflict resolution | |||||
* Link carrier detection | |||||
* Wireless SSID profiles | |||||
* ARP ping profiles | |||||
endef | |||||
CONFIGURE_ARGS+= --prefix=/ --sbindir=/sbin \ | |||||
--libexecdir=/lib/dhcpcd --dbdir=/var/dhcpcd | |||||
define Package/dhcpcd/install | |||||
$(INSTALL_DIR) $(1)/sbin $(1)/etc $(1)/lib/dhcpcd/dhcpcd-hooks | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/dhcpcd $(1)/sbin/ | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/dhcpcd/dhcpcd-run-hooks \ | |||||
$(1)/lib/dhcpcd/ | |||||
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/lib/dhcpcd/dhcpcd-hooks/* \ | |||||
$(1)/lib/dhcpcd/dhcpcd-hooks/ | |||||
$(INSTALL_DIR) $(1)/etc/init.d | |||||
$(INSTALL_BIN) ./files/dhcpcd.init $(1)/etc/init.d/dhcpcd | |||||
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/dhcpcd.conf $(1)/etc/dhcpcd.conf | |||||
endef | |||||
$(eval $(call BuildPackage,dhcpcd)) |
@ -0,0 +1,24 @@ | |||||
#!/bin/sh /etc/rc.common | |||||
# | |||||
# Copyright (C) 2014 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
START=30 | |||||
STOP=85 | |||||
USE_PROCD=1 | |||||
start_service() | |||||
{ | |||||
procd_open_instance | |||||
procd_set_param command /sbin/dhcpcd -B | |||||
procd_set_param respawn | |||||
procd_close_instance | |||||
} | |||||
reload_service() | |||||
{ | |||||
/sbin/dhcpcd -n | |||||
} |
@ -0,0 +1,45 @@ | |||||
# | |||||
# Copyright (C) 2006 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=horst | |||||
PKG_VERSION:=4.0 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-git.tar.gz | |||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) | |||||
PKG_SOURCE_URL:=git://br1.einfach.org/horst | |||||
PKG_SOURCE_PROTO:=git | |||||
PKG_SOURCE_VERSION:=version-4.0 | |||||
PKG_BUILD_PARALLEL:=1 | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/horst | |||||
SECTION:=net | |||||
CATEGORY:=Network | |||||
SUBMENU:=wireless | |||||
DEPENDS:=+libncurses | |||||
MAINTAINER:=Bruno Randolf <br1@einfach.org> | |||||
TITLE:=Highly Optimized 802.11 Radio Scanning Tool | |||||
URL:=http://br1.einfach.org/tech/horst/ | |||||
endef | |||||
define Package/horst/description | |||||
[horst] is a scanning and analysis tool for 802.11 wireless networks | |||||
and especially IBSS (ad-hoc) mode and mesh networks (OLSR). | |||||
endef | |||||
define Package/horst/install | |||||
$(INSTALL_DIR) $(1)/usr/sbin | |||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/horst $(1)/usr/sbin/ | |||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/horst.sh $(1)/usr/sbin/ | |||||
endef | |||||
$(eval $(call BuildPackage,horst)) |
@ -0,0 +1,59 @@ | |||||
# | |||||
# Copyright (C) 2009-2014 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=p910nd | |||||
PKG_VERSION:=0.97 | |||||
PKG_RELEASE:=4 | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | |||||
PKG_SOURCE_URL:=@SF/p910nd | |||||
PKG_LICENSE:=GPLv2 | |||||
PKG_LICENSE_FILES:=COPYING | |||||
PKG_MD5SUM:=69461a6c54dca0b13ecad5b83864b43e | |||||
PKG_MAINTAINER:=Philipp Kerling <pkerling@casix.org> | |||||
PKG_INSTALL:=1 | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/p910nd | |||||
SECTION:=net | |||||
CATEGORY:=Network | |||||
SUBMENU:=Printing | |||||
TITLE:=A small non-spooling printer server | |||||
URL:=http://p910nd.sourceforge.net | |||||
endef | |||||
define Package/p910nd/conffiles | |||||
/etc/config/p910nd | |||||
endef | |||||
define Package/p910nd/description | |||||
p910nd is a small daemon that copies any data received on | |||||
the port it is listening on to the corresponding printer | |||||
port. It is primarily intended for diskless Linux hosts | |||||
running as printer drivers but there is no reason why it | |||||
could not be used on diskful hosts. Port 9100 is copied | |||||
to /dev/lp0, 9101 to /dev/lp1 and 9102 to /dev/lp2. The | |||||
default is port 9100 to /dev/lp0. | |||||
endef | |||||
MAKE_FLAGS += \ | |||||
CFLAGS="$(TARGET_CFLAGS) -DLOCKFILE_DIR=\"\\\"/tmp\"\\\"" | |||||
define Package/p910nd/install | |||||
$(INSTALL_DIR) $(1)/usr/sbin | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/p910nd $(1)/usr/sbin/ | |||||
$(INSTALL_DIR) $(1)/etc/config | |||||
$(INSTALL_DATA) ./files/p910nd.config $(1)/etc/config/p910nd | |||||
$(INSTALL_DIR) $(1)/etc/init.d | |||||
$(INSTALL_BIN) ./files/p910nd.init $(1)/etc/init.d/p910nd | |||||
endef | |||||
$(eval $(call BuildPackage,p910nd)) |
@ -0,0 +1,5 @@ | |||||
config p910nd | |||||
option device /dev/usb/lp0 | |||||
option port 0 | |||||
option bidirectional 1 | |||||
option enabled 0 |
@ -0,0 +1,51 @@ | |||||
#!/bin/sh /etc/rc.common | |||||
# Copyright (C) 2007 OpenWrt.org | |||||
START=50 | |||||
append_bool() { | |||||
local section="$1" | |||||
local option="$2" | |||||
local value="$3" | |||||
local _val | |||||
config_get_bool _val "$section" "$option" '0' | |||||
[ "$_val" -gt 0 ] && append args "$3" | |||||
} | |||||
append_string() { | |||||
local section="$1" | |||||
local option="$2" | |||||
local value="$3" | |||||
local _val | |||||
config_get _val "$section" "$option" | |||||
[ -n "$_val" ] && append args "$3$_val" | |||||
} | |||||
start_service() { | |||||
local section="$1" | |||||
args="" | |||||
append_bool "$section" bidirectional "-b" | |||||
append_string "$section" device "-f " | |||||
append_string "$section" bind "-i " | |||||
append_string "$section" port "" | |||||
config_get_bool "enabled" "$section" "enabled" '1' | |||||
[ "$enabled" -gt 0 ] && /usr/sbin/p910nd $args | |||||
} | |||||
stop_service() { | |||||
local section="$1" | |||||
config_get port "$section" port | |||||
PID_F=/var/run/p910${port}d.pid | |||||
[ -f $PID_F ] && kill $(cat $PID_F) | |||||
} | |||||
start() { | |||||
config_load "p910nd" | |||||
config_foreach start_service p910nd | |||||
} | |||||
stop() { | |||||
config_load "p910nd" | |||||
config_foreach stop_service p910nd | |||||
} |
@ -0,0 +1,57 @@ | |||||
# | |||||
# Copyright (C) 2008-2012 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=radsecproxy | |||||
PKG_VERSION:=1.6.5 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||||
PKG_SOURCE_URL:=http://software.uninett.no/radsecproxy/ | |||||
PKG_MD5SUM:=f74f82a7ae2cdf2b1d9d271a5c360617 | |||||
PKG_INSTALL:=1 | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/radsecproxy | |||||
SECTION:=net | |||||
CATEGORY:=Network | |||||
DEPENDS:=+libopenssl +libpthread | |||||
TITLE:=radsecproxy | |||||
URL:=http://software.uninett.no/radsecproxy | |||||
MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk> | |||||
endef | |||||
define Package/radsecproxy/description | |||||
A generic radius proxy for UDP/TLS (RadSec) | |||||
endef | |||||
CONFIGURE_ARGS+= \ | |||||
--with-ssl="$(STAGING_DIR)/usr" | |||||
#TARGET_CFLAGS += -ansi | |||||
#TARGET_CFLAGS += -std=c99 | |||||
TARGET_CFLAGS += -Wno-long-long | |||||
define Package/radsecproxy/install | |||||
$(INSTALL_DIR) $(1)/usr/sbin/ | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/radsecproxy $(1)/usr/sbin/ | |||||
$(INSTALL_DIR) $(1)/etc/ | |||||
$(CP) $(PKG_BUILD_DIR)/radsecproxy.conf-example $(1)/etc/radsecproxy.conf | |||||
$(INSTALL_DIR) $(1)/etc/init.d/ | |||||
$(INSTALL_BIN) ./files/radsecproxy.init $(1)/etc/init.d/radsecproxy | |||||
endef | |||||
define Package/radsecproxy/conffiles | |||||
/etc/radsecproxy.conf | |||||
endef | |||||
$(eval $(call BuildPackage,radsecproxy)) | |||||
@ -0,0 +1,16 @@ | |||||
#!/bin/sh /etc/rc.common | |||||
# Copyright (C) 2006-2011 OpenWrt.org | |||||
START=70 | |||||
USE_PROCD=1 | |||||
PROG=/usr/sbin/radsecproxy | |||||
CONFFILE=/etc/radsecproxy.conf | |||||
start_service() { | |||||
procd_open_instance | |||||
procd_set_param command $PROG -f -c $CONFFILE | |||||
procd_set_param file $CONFFILE | |||||
procd_set_param respawn | |||||
procd_close_instance | |||||
} |
@ -0,0 +1,58 @@ | |||||
--- a/dtls.c | |||||
+++ b/dtls.c | |||||
@@ -523,6 +523,7 @@ void *udpdtlsserverrd(void *arg) { | |||||
free(params); | |||||
cacheexpire(sessioncache, &lastexpiry); | |||||
} | |||||
+ return NULL; | |||||
} | |||||
int dtlsconnect(struct server *server, struct timeval *when, int timeout, char *text) { | |||||
@@ -642,6 +643,7 @@ void *udpdtlsclientrd(void *arg) { | |||||
if (udp2bio(s, conf->servers->rbios, cnt)) | |||||
debug(DBG_DBG, "radudpget: got DTLS in UDP from %s", addr2string((struct sockaddr *)&from)); | |||||
} | |||||
+ return NULL; | |||||
} | |||||
void *dtlsclientrd(void *arg) { | |||||
--- a/radsecproxy.c | |||||
+++ b/radsecproxy.c | |||||
@@ -3203,6 +3203,8 @@ void *sighandler(void *arg) { | |||||
debug(DBG_WARN, "sighandler: ignoring signal %d", sig); | |||||
} | |||||
} | |||||
+ | |||||
+ return NULL; | |||||
} | |||||
int createpidfile(const char *pidfile) { | |||||
@@ -3289,6 +3291,8 @@ int radsecproxy_main(int argc, char **ar | |||||
/* just hang around doing nothing, anything to do here? */ | |||||
for (;;) | |||||
sleep(1000); | |||||
+ | |||||
+ return 0; | |||||
} | |||||
/* Local Variables: */ | |||||
--- a/udp.c | |||||
+++ b/udp.c | |||||
@@ -266,6 +266,8 @@ void *udpclientrd(void *arg) { | |||||
buf = radudpget(*s, NULL, &server, NULL); | |||||
replyh(server, buf); | |||||
} | |||||
+ | |||||
+ return NULL; | |||||
} | |||||
void *udpserverrd(void *arg) { | |||||
@@ -310,6 +312,8 @@ void *udpserverwr(void *arg) { | |||||
debug(DBG_DBG, "udpserverwr: refcount %d", reply->refcount); | |||||
freerq(reply); | |||||
} | |||||
+ | |||||
+ return NULL; | |||||
} | |||||
void addclientudp(struct client *client) { |
@ -0,0 +1,31 @@ | |||||
diff --git a/radsecproxy.c b/radsecproxy.c | |||||
index 563c4a8..9fa076d 100644 | |||||
--- a/radsecproxy.c | |||||
+++ b/radsecproxy.c | |||||
@@ -3382,18 +3382,16 @@ int radsecproxy_main(int argc, char **argv) { | |||||
options.loglevel = loglevel; | |||||
else if (options.loglevel) | |||||
debug_set_level(options.loglevel); | |||||
- if (!foreground) { | |||||
- debug_set_destination(options.logdestination | |||||
- ? options.logdestination | |||||
- : "x-syslog:///", LOG_TYPE_DEBUG); | |||||
+ debug_set_destination(options.logdestination | |||||
+ ? options.logdestination | |||||
+ : "x-syslog:///", LOG_TYPE_DEBUG); | |||||
#if defined(WANT_FTICKS) | |||||
- if (options.ftickssyslogfacility) { | |||||
- debug_set_destination(options.ftickssyslogfacility, | |||||
- LOG_TYPE_FTICKS); | |||||
- free(options.ftickssyslogfacility); | |||||
- } | |||||
-#endif | |||||
+ if (options.ftickssyslogfacility) { | |||||
+ debug_set_destination(options.ftickssyslogfacility, | |||||
+ LOG_TYPE_FTICKS); | |||||
+ free(options.ftickssyslogfacility); | |||||
} | |||||
+#endif | |||||
free(options.logdestination); | |||||
if (!list_first(clconfs)) |
@ -0,0 +1,60 @@ | |||||
# | |||||
# Copyright (C) 2007-2013 OpenWrt.org | |||||
# | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
# | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=tinc | |||||
PKG_VERSION:=1.0.24 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||||
PKG_SOURCE_URL:=http://www.tinc-vpn.org/packages | |||||
PKG_MD5SUM:=14a91eb2e85bdc0451a815612521b708 | |||||
PKG_INSTALL:=1 | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/tinc | |||||
SECTION:=net | |||||
CATEGORY:=Network | |||||
DEPENDS:=+liblzo +libopenssl +kmod-tun | |||||
TITLE:=VPN tunneling daemon | |||||
URL:=http://www.tinc-vpn.org/ | |||||
MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk> | |||||
SUBMENU:=VPN | |||||
endef | |||||
define Package/tinc/description | |||||
tinc is a Virtual Private Network (VPN) daemon that uses tunnelling and | |||||
encryption to create a secure private network between hosts on the Internet. | |||||
endef | |||||
TARGET_CFLAGS += -std=gnu99 | |||||
CONFIGURE_ARGS += \ | |||||
--with-kernel="$(LINUX_DIR)" \ | |||||
--with-zlib="$(STAGING_DIR)/usr" \ | |||||
--with-lzo-include="$(STAGING_DIR)/usr/include/lzo" | |||||
define Package/tinc/install | |||||
$(INSTALL_DIR) $(1)/usr/sbin | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/tincd $(1)/usr/sbin/ | |||||
$(INSTALL_DIR) $(1)/etc/init.d/ | |||||
$(INSTALL_BIN) files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME) | |||||
$(INSTALL_DIR) $(1)/etc/config | |||||
$(INSTALL_CONF) files/$(PKG_NAME).config $(1)/etc/config/$(PKG_NAME) | |||||
$(INSTALL_DIR) $(1)/etc/tinc | |||||
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d | |||||
$(INSTALL_DATA) files/tinc.upgrade $(1)/lib/upgrade/keep.d/tinc | |||||
endef | |||||
define Package/tinc/conffiles | |||||
/etc/config/tinc | |||||
endef | |||||
$(eval $(call BuildPackage,tinc)) |
@ -0,0 +1,56 @@ | |||||
config tinc-net NETNAME | |||||
option enabled 0 | |||||
## Daemon Configuration (cmd arguments) | |||||
#option generate_keys 0 | |||||
#option key_size 2048 | |||||
#option logfile /tmp/log/tinc.NETNAME.log | |||||
#option debug 3 | |||||
## Server Configuration (tinc.conf) | |||||
#option AddressFamily any | |||||
#option BindToAddress 127.0.0.1 | |||||
#option BindToInterface lo | |||||
#list ConnectTo peer1 | |||||
#option DirectOnly 0 | |||||
#option Forwarding internal | |||||
#option GraphDumpFile /tmp/log/tinc.NETNAME.dot | |||||
#option Hostnames 0 | |||||
#option IffOneQueue 0 | |||||
#option Interface NETNAME | |||||
#option KeyExpire 3600 | |||||
#option MACExpire 600 | |||||
#option MaxTimeout 900 | |||||
#option Mode router | |||||
option Name NODENAME | |||||
#option PingInterval 60 | |||||
#option PingTimeout 5 | |||||
#option PriorityInheritance 0 | |||||
#option PrivateKeyFile /etc/tinc/NETNAME/rsa_key.priv | |||||
#option ProcessPriority normal | |||||
#option ReplayWindow 16 | |||||
#option StrictSubnets 0 | |||||
#option TunnelServer 0 | |||||
#option UDPRcvBuf x | |||||
#option UDPSndBuf x | |||||
config tinc-host NODENAME | |||||
option enabled 0 | |||||
option net NETNAME | |||||
#list Address example.com | |||||
#option Cipher blowfish | |||||
#option ClampMSS yes | |||||
#option Compression 0 | |||||
#option Digest sha1 | |||||
#option IndirectData 0 | |||||
#option MACLength 4 | |||||
#option PMTU 1514 | |||||
#option PMTUDiscovery yes | |||||
#option Port 655 | |||||
#option Subnet 192.168.1.0/24 |
@ -0,0 +1,241 @@ | |||||
#!/bin/sh /etc/rc.common | |||||
# Copyright (C) 2011 OpenWrt.org | |||||
# Copyright (C) 2011 Linus Lüssing | |||||
# Based on Jo-Philipp Wich's OpenVPN init script | |||||
# This is free software, licensed under the GNU General Public License v2. | |||||
# See /LICENSE for more information. | |||||
START=42 | |||||
SERVICE_USE_PID=1 | |||||
BIN=/usr/sbin/tincd | |||||
EXTRA_COMMANDS="up down" | |||||
LIST_SEP=" | |||||
" | |||||
TMP_TINC="/tmp/tinc" | |||||
append_param() { | |||||
local v="$1" | |||||
case "$v" in | |||||
*_*_*_*) v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_} ;; | |||||
*_*_*) v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_} ;; | |||||
*_*) v=${v%%_*}-${v#*_} ;; | |||||
esac | |||||
ARGS="$ARGS --$v" | |||||
return 0 | |||||
} | |||||
append_conf_bools() { | |||||
local p; local v; local s="$1"; local f="$2"; shift; shift | |||||
for p in $*; do | |||||
config_get_bool v "$s" "$p" | |||||
[ "$v" == 1 ] && echo "$p = yes" >> "$f" | |||||
[ "$v" == 0 ] && echo "$p = no" >> "$f" | |||||
done | |||||
} | |||||
append_params() { | |||||
local p; local v; local s="$1"; shift | |||||
for p in $*; do | |||||
config_get v "$s" "$p" | |||||
IFS="$LIST_SEP" | |||||
for v in $v; do | |||||
[ -n "$v" ] && append_param "$p" && ARGS="$ARGS=$v" | |||||
done | |||||
unset IFS | |||||
done | |||||
} | |||||
append_conf_params() { | |||||
local p; local v; local s="$1"; local f="$2"; shift; shift | |||||
for p in $*; do | |||||
config_get v "$s" "$p" | |||||
IFS="$LIST_SEP" | |||||
for v in $v; do | |||||
# Look up OpenWRT interface names | |||||
[ "$p" = "BindToInterface" ] && { | |||||
local ifname=$(uci -P /var/state get network.$v.ifname 2>&-) | |||||
[ -n "$ifname" ] && v="$ifname" | |||||
} | |||||
[ -n "$v" ] && echo "$p = $v" >> "$f" | |||||
done | |||||
unset IFS | |||||
done | |||||
} | |||||
section_enabled() { | |||||
config_get_bool enabled "$1" 'enabled' 0 | |||||
[ $enabled -gt 0 ] | |||||
} | |||||
prepare_host() { | |||||
local s="$1" | |||||
local n | |||||
# net disabled? | |||||
config_get n "$s" net | |||||
section_enabled "$n" || return 1 | |||||
if [ "$#" = "2" ]; then | |||||
[ "$2" != "$n" ] && return 1 | |||||
fi | |||||
# host disabled? | |||||
section_enabled "$s" || { | |||||
[ -f "$TMP_TINC/$n/hosts/$s" ] && rm "$TMP_TINC/$n/hosts/$s" | |||||
return 1 | |||||
} | |||||
[ ! -f "/etc/tinc/$n/hosts/$s" ] && { | |||||
echo -n "tinc: Warning, public key for $s for network $n " | |||||
echo -n "missing in /etc/tinc/$n/hosts/$s, " | |||||
echo "skipping configuration of $s" | |||||
return 1 | |||||
} | |||||
# append flags | |||||
append_conf_bools "$s" "$TMP_TINC/$n/hosts/$s" \ | |||||
ClampMSS IndirectData PMTUDiscovery TCPOnly | |||||
# append params | |||||
append_conf_params "$s" "$TMP_TINC/$n/hosts/$s" \ | |||||
Address Cipher Compression Digest MACLength PMTU \ | |||||
Port PublicKey PublicKeyFile Subnet | |||||
} | |||||
check_gen_own_key() { | |||||
local s="$1"; local n; local k | |||||
config_get n "$s" Name | |||||
config_get_bool k "$s" generate_keys 0 | |||||
[ "$k" == 0 ] && return 0 | |||||
([ -z "$n" ] || [ -f "$TMP_TINC/$s/hosts/$n" ] || [ -f "$TMP_TINC/$s/rsa_key.priv" ]) && \ | |||||
return 0 | |||||
[ ! -d "$TMP_TINC/$s/hosts" ] && mkdir -p "$TMP_TINC/$s/hosts" | |||||
config_get k "$s" key_size | |||||
if [ -z "$k" ]; then | |||||
$BIN -c "$TMP_TINC/$s" --generate-keys </dev/null | |||||
else | |||||
$BIN -c "$TMP_TINC/$s" "--generate-keys=$k" </dev/null | |||||
fi | |||||
[ ! -d "/etc/tinc/$s/hosts" ] && mkdir -p "/etc/tinc/$s/hosts" | |||||
cp "$TMP_TINC/$s/rsa_key.priv" "/etc/tinc/$s/" | |||||
[ -n "$n" ] && cp "$TMP_TINC/$s/hosts/$n" "/etc/tinc/$s/hosts/" | |||||
} | |||||
prepare_net() { | |||||
local s="$1" | |||||
local n | |||||
section_enabled "$s" || return 1 | |||||
# rm old config | |||||
rm -rf "$TMP_TINC/$s/" | |||||
[ ! -d "$TMP_TINC/$s" ] && mkdir -p "$TMP_TINC/$s" | |||||
[ -d "/etc/tinc/$s" ] && cp -r "/etc/tinc/$s" "$TMP_TINC/" | |||||
# append flags | |||||
append_conf_bools "$s" "$TMP_TINC/$s/tinc.conf" \ | |||||
DecrementTTL DirectOnly Hostnames IffOneQueue \ | |||||
LocalDiscovery PriorityInheritance StrictSubnets TunnelServer \ | |||||
ClampMSS IndirectData PMTUDiscovery TCPOnly | |||||
# append params | |||||
append_conf_params "$s" "$TMP_TINC/$s/tinc.conf" \ | |||||
AddressFamily BindToAddress ConnectTo BindToInterface \ | |||||
Broadcast Device DeviceType Forwarding \ | |||||
GraphDumpFile Interface KeyExpire MACExpire \ | |||||
MaxTimeout Mode Name PingInterval PingTimeout \ | |||||
PrivateKey PrivateKeyFile ProcessPriority ReplayWindow \ | |||||
UDPRcvBuf UDPSndBuf \ | |||||
Address Cipher Compression Digest MACLength PMTU \ | |||||
Port PublicKey PublicKeyFile Subnet | |||||
check_gen_own_key "$s" && return 0 | |||||
} | |||||
start_instance() { | |||||
local s="$1" | |||||
section_enabled "$s" || return 1 | |||||
ARGS="" | |||||
# append params | |||||
append_params "$s" logfile debug | |||||
SERVICE_PID_FILE="/var/run/tinc.$s.pid" | |||||
service_start $BIN -c "$TMP_TINC/$s" -n $s $ARGS --pidfile="$SERVICE_PID_FILE" | |||||
} | |||||
stop_instance() { | |||||
local s="$1" | |||||
section_enabled "$s" || return 1 | |||||
SERVICE_PID_FILE="/var/run/tinc.$s.pid" | |||||
service_stop $BIN | |||||
# rm old config | |||||
rm -rf "$TMP_TINC/$s/" | |||||
} | |||||
reload_instance() { | |||||
local s="$1" | |||||
section_enabled "$s" || return 1 | |||||
SERVICE_PID_FILE="/var/run/tinc.$s.pid" | |||||
service_reload $BIN | |||||
} | |||||
start() { | |||||
config_load 'tinc' | |||||
config_foreach prepare_net 'tinc-net' | |||||
config_foreach prepare_host 'tinc-host' | |||||
config_foreach start_instance 'tinc-net' | |||||
} | |||||
stop() { | |||||
config_load 'tinc' | |||||
config_foreach stop_instance 'tinc-net' | |||||
} | |||||
reload() { | |||||
config_load 'tinc' | |||||
config_foreach reload_instance 'tinc-net' | |||||
} | |||||
up() { | |||||
local exists | |||||
local instance | |||||
config_load 'tinc' | |||||
for instance in "$@"; do | |||||
config_get exists "$instance" 'TYPE' | |||||
if [ "$exists" == "tinc-net" ]; then | |||||
prepare_net "$instance" | |||||
config_foreach prepare_host 'tinc-host' "$instance" | |||||
start_instance "$instance" | |||||
fi | |||||
done | |||||
} | |||||
down() { | |||||
local exists | |||||
local instance | |||||
config_load 'tinc' | |||||
for instance in "$@"; do | |||||
config_get exists "$instance" 'TYPE' | |||||
if [ "$exists" == "tinc-net" ]; then | |||||
stop_instance "$instance" | |||||
fi | |||||
done | |||||
} |
@ -0,0 +1 @@ | |||||
/etc/tinc/ |