diff --git a/modules/access/smb.c b/modules/access/smb.c
index 3f21b6be03afa42b1d92498166db4d5680e2d52b..b5f518b366e5b47349d03486e3839da99cff3e8b 100644
--- a/modules/access/smb.c
+++ b/modules/access/smb.c
@@ -198,21 +198,24 @@ static int Open( vlc_object_t *p_this )
 #ifdef WIN32
     if( psz_user )
         Win32AddConnection( p_access, psz_path, psz_user, psz_pwd, psz_domain);
-    asprintf( &psz_uri, "//%s", psz_path );
+    i_ret = asprintf( &psz_uri, "//%s", psz_path );
 #else
     if( psz_user )
-        asprintf( &psz_uri, "smb://%s%s%s%s%s@%s",
-                  psz_domain ? psz_domain : "", psz_domain ? ";" : "",
-                  psz_user, psz_pwd ? ":" : "",
-                  psz_pwd ? psz_pwd : "", psz_path );
+        i_ret = asprintf( &psz_uri, "smb://%s%s%s%s%s@%s",
+                          psz_domain ? psz_domain : "", psz_domain ? ";" : "",
+                          psz_user, psz_pwd ? ":" : "",
+                          psz_pwd ? psz_pwd : "", psz_path );
     else
-        asprintf( &psz_uri, "smb://%s", psz_path );
+        i_ret = asprintf( &psz_uri, "smb://%s", psz_path );
 #endif
 
     free( psz_user );
     free( psz_pwd );
     free( psz_domain );
 
+    if( i_ret == -1 )
+        return VLC_ENOMEM;
+
 #ifdef USE_CTX
     if( !(p_smb = smbc_new_context()) )
     {