}
       result.append(val);
    }
-
-   // do some normalisation by removing // and /./ from the path
-   size_t found = string::npos;
-   while ((found = result.find("/./")) != string::npos)
-      result.replace(found, 3, "/");
-   while ((found = result.find("//")) != string::npos)
-      result.replace(found, 2, "/");
-
-   return result;
+   return flNormalize(result);
 }
                                                                        /*}}}*/
 // Configuration::FindDir - Find a directory name                      /*{{{*/
 
    return AbsPath;
 }
                                                                        /*}}}*/
+std::string flNormalize(std::string file)                              /*{{{*/
+{
+   if (file.empty())
+      return file;
+   // do some normalisation by removing // and /./ from the path
+   size_t found = string::npos;
+   while ((found = file.find("/./")) != string::npos)
+      file.replace(found, 3, "/");
+   while ((found = file.find("//")) != string::npos)
+      file.replace(found, 2, "/");
+
+   if (APT::String::Startswith(file, "/dev/null"))
+   {
+      file.erase(strlen("/dev/null"));
+      return file;
+   }
+   return file;
+}
+                                                                       /*}}}*/
 // SetCloseExec - Set the close on exec flag                           /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 
        EXPECT_EQ("/rootdir/dev/null", Cnf.FindDir("Dir::State"));
        EXPECT_EQ("/rootdir/dev/null", Cnf.FindDir("Dir::State::lists"));
 }
+TEST(ConfigurationTest,DevNullInPaths)
+{
+       Configuration Cnf;
+       EXPECT_EQ("", Cnf.FindFile("Dir"));
+       EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+       EXPECT_EQ("", Cnf.FindFile("Dir::State::status"));
+       Cnf.Set("Dir::State", "/dev/null");
+       EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State"));
+       Cnf.Set("Dir", "/");
+       Cnf.Set("Dir::State::status", "status");
+       EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State"));
+       EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State::status"));
+       Cnf.Set("Dir::State", "");
+       EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+       EXPECT_EQ("/status", Cnf.FindFile("Dir::State::status"));
+       Cnf.Set("Dir", "/dev/null");
+       EXPECT_EQ("/dev/null", Cnf.FindFile("Dir"));
+       EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+       EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State::status"));
+       Cnf.Set("Dir", "/rootdir");
+       EXPECT_EQ("/rootdir", Cnf.FindFile("Dir"));
+       EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+       EXPECT_EQ("/rootdir/status", Cnf.FindFile("Dir::State::status"));
+       Cnf.Set("Dir::State::status", "/foo/status");
+       EXPECT_EQ("/rootdir", Cnf.FindFile("Dir"));
+       EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+       EXPECT_EQ("/foo/status", Cnf.FindFile("Dir::State::status"));
+}
 TEST(ConfigurationTest,Vector)
 {
        Configuration Cnf;