Avoid a crash if there is no index configured
[cascardo/atompub.git] / frontend / cgi / cgi.c
index 5497941..7b8ac55 100644 (file)
@@ -33,26 +33,33 @@ cgi_serve_request (AtomCtx *ctx)
     return;
   if (path == NULL)
     {
-      path = atom_config_get_str (ctx, "cgi", "index");
+      if ((path = atom_config_get_str (ctx, "cgi", "index")) == NULL)
+        {
+          /* We do not want to disclose our configuration is empty.
+           * The requester cannot distinguish an empty configuration
+           * from a non-existent index.
+           */
+          fprintf (stdout, "Status: 404 Not Found\n\n");
+        }
     }
   if (!strcmp (method, "GET"))
     {
-      IRI *iri = iri_new ();
-      AtomEntry *atom;
+      AtomID *id;
+      AtomResource *atom;
       AtomError *error;
-      iri_set_path (iri, path);
-      atom = atom_retrieve_resource (ctx, iri);
-      iri_delete (iri);
+      id = atom_id_new (path);
+      atom = atom_retrieve_resource (ctx, id);
+      atom_id_delete (id);
       if (atom)
        {
          char * str;
          size_t len;
          char *header = "Content-type: application/atom+xml\n\n";
          write (1, header, strlen (header));
-         atom_entry_string (atom, &str, &len);
+         atom_resource_string (atom, &str, &len);
          write (1, str, len);
          g_free (str);
-         atom_entry_delete (atom);
+         atom_resource_delete (atom);
        }
       else if ((error = atom_error_get (ctx)) != NULL)
        {