Index: trunk/include/samhain.h
===================================================================
--- trunk/include/samhain.h	(revision 131)
+++ trunk/include/samhain.h	(revision 132)
@@ -45,4 +45,5 @@
 #define SH_GRBUF_SIZE  4096
 #define SH_PWBUF_SIZE  4096
+#define SH_ERRBUF_SIZE   64
 
 /* Sizes for arrays (user, group, timestamp).
Index: trunk/include/sh_error.h
===================================================================
--- trunk/include/sh_error.h	(revision 131)
+++ trunk/include/sh_error.h	(revision 132)
@@ -176,5 +176,5 @@
 /* error messages
  */
-/*@owned@*/char * sh_error_message (int tellme);
+/*@owned@*/char * sh_error_message (int tellme, char * str, size_t len);
 
 /* switch on/off log to file temporarily
Index: trunk/include/sh_pthread.h
===================================================================
--- trunk/include/sh_pthread.h	(revision 131)
+++ trunk/include/sh_pthread.h	(revision 132)
@@ -23,4 +23,6 @@
 	} while (0)
 
+#define SH_MUTEX_LOCK_UNSAFE(M) pthread_mutex_lock(&(M))
+#define SH_MUTEX_UNLOCK_UNSAFE(M) pthread_mutex_unlock(&(M))
 
 #else
@@ -32,4 +34,6 @@
 #define SH_MUTEX_LOCK(M)			((void)0)
 #define SH_MUTEX_UNLOCK(M)			((void)0)
+#define SH_MUTEX_LOCK_UNSAFE(M)			((void)0)
+#define SH_MUTEX_UNLOCK_UNSAFE(M)		((void)0)
 
 /* #ifdef HAVE_PTHREAD */
Index: trunk/include/sh_tools.h
===================================================================
--- trunk/include/sh_tools.h	(revision 131)
+++ trunk/include/sh_tools.h	(revision 132)
@@ -16,7 +16,11 @@
 
 #ifdef SH_ENCRYPT
-char * errorExplain (int err_num);
+/* returns pointer to errbuf
+ */
+char * errorExplain (int err_num, char * errbuf, size_t len);
 #endif
 
+/* returns allocated buffer
+ */
 char * sh_tools_safe_name(const char * str, int flag);
 int is_numeric (const char * address);
@@ -26,5 +30,8 @@
 		    char * ecall, int * errnum, char * errmsg, int errsiz);
 void delete_cache(void);
-char * sh_tools_errmessage (int tellme);
+
+/* returns pointer to errbuf
+ */
+char * sh_tools_errmessage (int tellme, char * errbuf, size_t len);
 
 
@@ -41,8 +48,15 @@
 int check_request_nerr (char * have, char * need);
 
+/* returns allocated buffer
+ */
 char * hash_me (char * key, char * buf,   int buflen);
 int sh_tools_hash_vfy(char * key, char * buf, int buflen);
 
+/* returns allocated buffer
+ */
 char * get_client_conf_file (char * peer, unsigned long * length);
+
+/* returns allocated buffer
+ */
 char * get_client_data_file (char * peer, unsigned long * length);
 
Index: trunk/include/sh_unix.h
===================================================================
--- trunk/include/sh_unix.h	(revision 131)
+++ trunk/include/sh_unix.h	(revision 132)
@@ -291,11 +291,11 @@
 int  sh_unix_init(int goDaemon);
 
-/* for local time use thetime = 0 
- */
-/*@owned@*/ char * sh_unix_time (time_t thetime);
-
-/* convert to GMT time
- */
-char * sh_unix_gmttime (time_t thetime);
+/* for local time use thetime = 0, returns pointer to buffer 
+ */
+char * sh_unix_time (time_t thetime, char * buffer, size_t len);
+
+/* convert to GMT time, returns pointer to buffer
+ */
+char * sh_unix_gmttime (time_t thetime, char * buffer, size_t len);
 
 /* effective user info
@@ -303,7 +303,7 @@
 int  sh_unix_getUser (void);
 
-/* get home directory
- */
-char *  sh_unix_getUIDdir (int level, uid_t uid);
+/* get home directory, , returns pointer to out
+ */
+char *  sh_unix_getUIDdir (int level, uid_t uid, char * out, size_t len);
 
 
Index: trunk/include/sh_utils.h
===================================================================
--- trunk/include/sh_utils.h	(revision 131)
+++ trunk/include/sh_utils.h	(revision 132)
@@ -43,4 +43,6 @@
 } st_format;
 
+/* returns allocated string
+ */
 char * sh_util_formatted (const char * fmt, st_format * ftab);
 
@@ -60,9 +62,17 @@
 int    taus_seed           (void);
 
+/* returns allocated memory
+ */
 char * sh_util_strdup (const char * str);
+
+/* returns allocated memory
+ */
 char * sh_util_strdup_l (const char * str, size_t len);
+
+/* returns pointer within str
+ */
 char * sh_util_strsep (char **str, const char *delim);
 
-/* compactify verbose acl text
+/* compactify verbose acl text, returns allocated memory
  */
 char * sh_util_acl_compact (char * buf, ssize_t len);
@@ -146,5 +156,5 @@
 
 /* returns freshly allocated memory, return value should be free'd.
- * Arhument list must be NULL terminated.
+ * Argument list must be NULL terminated.
  */
 char * sh_util_strconcat (const char * arg1, ...) SH_GNUC_NULL_TERMINATED;
