diff -urN libssh-0.5.5/src/client.c libssh-0.5.5.mod/src/client.c
--- libssh-0.5.5/src/client.c	2013-07-26 08:42:26.000000000 +0200
+++ libssh-0.5.5.mod/src/client.c	2013-10-16 16:02:26.000000000 +0200
@@ -107,6 +107,10 @@
   	if(buffer[i]=='\n'){
   		buffer[i]='\0';
   		str=strdup(buffer);
+		if(str == NULL){
+			leave_function();
+			return SSH_ERROR;
+		}
   		/* number of bytes read */
   		ret=i+1;
   		session->serverbanner=str;
diff -urN libssh-0.5.5/src/scp.c libssh-0.5.5.mod/src/scp.c
--- libssh-0.5.5/src/scp.c	2013-07-26 08:39:39.000000000 +0200
+++ libssh-0.5.5.mod/src/scp.c	2013-10-16 16:02:46.000000000 +0200
@@ -741,7 +741,7 @@
  */
 char *ssh_scp_string_mode(int mode){
 	char buffer[16];
-	snprintf(buffer,sizeof(buffer),"%.4o",mode);
+	snprintf(buffer,sizeof(buffer),"%.4d",mode);
 	return strdup(buffer);
 }
 
