This simple patch fixes the segfault reported on PR cli/23785, which
happens when using the "restore FILE binary" command with a
non-existent file.  We just have to check if the file handler returned
by "gdb_fopen_cloexec" is not NULL, and error out if it is.
A test has also been added to gdb.base/restore.exp in order to
exercise this scenario.
No regressions introduced.
gdb/ChangeLog:
2018-10-18  Sergio Durigan Junior  <sergiodj@redhat.com>
	PR cli/23785
	* cli/cli-dump.c (restore_binary_file): Check if "file" is
	NULL.
gdb/testsuite/ChangeLog:
2018-10-18  Sergio Durigan Junior  <sergiodj@redhat.com>
	PR cli/23785
	* gdb.base/restore.exp: New test to check if "restore" with an
	invalid file doesn't segfault.
+2018-10-18  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+       PR cli/23785
+       * cli/cli-dump.c (restore_binary_file): Check if "file" is
+       NULL.
+
 2018-10-17  Paul Koning  <paul_koning@dell.com>
 
        * charset.c (convert_between_encodings): Fix unsigned overflow.
 
   gdb_file_up file = gdb_fopen_cloexec (filename, FOPEN_RB);
   long len;
 
+  if (file == NULL)
+    error (_("Failed to open %s: %s"), filename, safe_strerror (errno));
+
   /* Get the file size for reading.  */
   if (fseek (file.get (), 0, SEEK_END) == 0)
     {
 
+2018-10-18  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+       PR cli/23785
+       * gdb.base/restore.exp: New test to check if "restore" with an
+       invalid file doesn't segfault.
+
 2018-10-18  Tom de Vries  <tdevries@suse.de>
 
        * gdb.ada/bp_inlined_func.exp: Fix capitalized test name.
 
 set timeout 30
 restore_tests
 set timeout $prev_timeout
+
+# Test PR cli/23785
+clean_restart $binfile
+if { ![runto_main] } {
+    return -1
+}
+gdb_test "restore non-existent-file binary" \
+    "Failed to open non-existent-file: .*"