aboutsummaryrefslogtreecommitdiffstats
path: root/erts/etc/unix/safe_string.c
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2013-12-16 16:34:58 +0100
committerLukas Larsson <[email protected]>2014-02-24 15:16:04 +0100
commitaa80261396941ee63758d6b5965a7e075b79b4ee (patch)
tree06aa7dcd6218c572762a4c9efbba235df222c726 /erts/etc/unix/safe_string.c
parentd6ead9a129fbe5a2df335a00e029a88a1f1849a2 (diff)
downloadotp-aa80261396941ee63758d6b5965a7e075b79b4ee.tar.gz
otp-aa80261396941ee63758d6b5965a7e075b79b4ee.tar.bz2
otp-aa80261396941ee63758d6b5965a7e075b79b4ee.zip
erts: Refactor common parts out of run_erl and to_erl
This is in preperation for writing ose version of run_erl and to_erl
Diffstat (limited to 'erts/etc/unix/safe_string.c')
-rw-r--r--erts/etc/unix/safe_string.c123
1 files changed, 0 insertions, 123 deletions
diff --git a/erts/etc/unix/safe_string.c b/erts/etc/unix/safe_string.c
deleted file mode 100644
index a77d9c5456..0000000000
--- a/erts/etc/unix/safe_string.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * %CopyrightBegin%
- *
- * Copyright Ericsson AB 2008-2009. All Rights Reserved.
- *
- * The contents of this file are subject to the Erlang Public License,
- * Version 1.1, (the "License"); you may not use this file except in
- * compliance with the License. You should have received a copy of the
- * Erlang Public License along with this software. If not, it can be
- * retrieved online at http://www.erlang.org/.
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and limitations
- * under the License.
- *
- * %CopyrightEnd%
- */
-/*
- * Module: safe_string.c
- *
- * This is a bunch of generic string operation
- * that are safe regarding buffer overflow.
- *
- * All string functions terminate the process with an error message
- * on buffer overflow.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-#include "safe_string.h"
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stdlib.h>
-
-
-static void string_overflow_handler(const char* format, ...)
-{
- va_list args;
- va_start(args, format);
- vfprintf(stderr,format,args);
- va_end(args);
- exit(1);
-}
-
-int vsn_printf(char* dst, size_t size, const char* format, va_list args)
-{
- int ret = vsnprintf(dst, size, format, args);
- if (ret >= size || ret < 0) {
- string_overflow_handler("Buffer truncated '%s'\n",dst);
- }
- return ret;
-}
-
-int sn_printf(char* dst, size_t size, const char* format, ...)
-{
- va_list args;
- int ret;
- va_start(args, format);
- ret = vsn_printf(dst,size,format,args);
- va_end(args);
- return ret;
-}
-
-int strn_cpy(char* dst, size_t size, const char* src)
-{
- return sn_printf(dst,size,"%s",src);
-}
-
-int strn_cat(char* dst, size_t size, const char* src)
-{
- return strn_catf(dst,size,"%s",src);
-}
-
-int strn_catf(char* dst, size_t size, const char* format, ...)
-{
- int ret;
- va_list args;
-#ifdef _GNU_SOURCE
- int len = strnlen(dst,size);
-#else
- int len = strlen(dst);
-#endif
-
- if (len >= size) {
- string_overflow_handler("Buffer already overflowed '%.*s'\n",
- size, dst);
- }
- va_start(args, format);
- ret = vsn_printf(dst+len, size-len, format, args);
- va_end(args);
- return len+ret;
-}
-
-char* find_str(const char* haystack, int hsize, const char* needle)
-{
- int i = 0;
- int nsize = strlen(needle);
- hsize -= nsize - 1;
- for (i=0; i<hsize; i++) {
- if (haystack[i]==needle[0] && strncmp(haystack+i,needle,nsize)==0) {
- return (char*)(haystack+i);
- }
- }
- return NULL;
-}
-
-#ifndef HAVE_MEMMOVE
-void* memmove(void *dest, const void *src, size_t n)
-{
- int i;
- if (src > dest) {
- for (i=0; i<n; i++) ((char*)dest)[i] = ((char*)src)[i];
- }
- else {
- for (i=(int)(n-1); i>=0; i--) ((char*)dest)[i] = ((char*)src)[i];
- }
- return dest;
-}
-#endif /* HAVE_MEMMOVE */
-