diff --git a/src/libs/3rdparty/net7ssh/src/ne7ssh.cpp b/src/libs/3rdparty/net7ssh/src/ne7ssh.cpp
index fee569089a397026a18b31ddb45a3aeb06beb638..21f5759e80c38331400af487d924213678c476ef 100644
--- a/src/libs/3rdparty/net7ssh/src/ne7ssh.cpp
+++ b/src/libs/3rdparty/net7ssh/src/ne7ssh.cpp
@@ -656,8 +656,9 @@ char *ne7ssh::readAndReset(int channel, char *(*alloc)(size_t))
       data = connections[i]->getReceived();
       if (data.size())
       {
-        buffer = alloc(connections[i]->getReceived().size());
-        strcpy(buffer, reinterpret_cast<char*>(connections[i]->getReceived().begin()));
+        Botan::SecureVector<Botan::byte>& received=connections[i]->getReceived();
+        buffer = alloc(received.size());
+        strncpy(buffer, reinterpret_cast<char*>(received.begin()), received.size());
         connections[i]->resetReceiveBuffer();
       }
       break;
diff --git a/src/libs/3rdparty/net7ssh/src/ne7ssh_string.cpp b/src/libs/3rdparty/net7ssh/src/ne7ssh_string.cpp
index a5982d9a5bbc8e6fd1852d2ae550c4cd370fd374..ef64f1432063a6afcb7706b0fa2b5a516fe7ca97 100644
--- a/src/libs/3rdparty/net7ssh/src/ne7ssh_string.cpp
+++ b/src/libs/3rdparty/net7ssh/src/ne7ssh_string.cpp
@@ -69,14 +69,18 @@ bool ne7ssh_string::addFile (const char* filename)
 
   fseek (FI, 0L, SEEK_END);
   size = ftell (FI);
-  rewind (FI);
-
-  data = (Botan::byte*) malloc (size);
-  fread (data, size, 1, FI);
-  fclose (FI);
-  buffer.append (data, (u32bit) size);
-  free (data);
-  return true;
+  if(size > 0) {
+      rewind (FI);
+
+      data = (Botan::byte*) malloc (size);
+      fread (data, size, 1, FI);
+      fclose (FI);
+      buffer.append (data, (u32bit) size);
+      free (data);
+      return true;
+  }
+  fclose(FI);
+  return false;
 }
 
 void ne7ssh_string::addBigInt (const Botan::BigInt& bn)