diff --git a/tools/selective_cfi/scfi_driver.cpp b/tools/selective_cfi/scfi_driver.cpp
index cd5374c12928d4508f0298dafca8899a99064610..0bd71b6d0e37b7f2434c1cec006d175564909b37 100644
--- a/tools/selective_cfi/scfi_driver.cpp
+++ b/tools/selective_cfi/scfi_driver.cpp
@@ -218,6 +218,7 @@ int main(int argc, char **argv)
 	cout<<"selective_cfi.exe started\n";
 
         bool one_success = false;
+	bool seen_failures = false;
         for(set<File_t*>::iterator it=pidp->GetFiles().begin();
             it!=pidp->GetFiles().end();
                 ++it)
@@ -245,15 +246,18 @@ int main(int argc, char **argv)
                         }
 			else
 			{
+				seen_failures = true;
 				cout<<"Skipping (no changes) "<<this_file->GetURL()<<endl;
 			}
                 }
                 catch (DatabaseError_t pnide)
                 {
+			seen_failures = true;
                         cerr << programName << ": Unexpected database error: " << pnide << "file url: " << this_file->GetURL() << endl;
                 }
                 catch (...)
                 {
+			seen_failures = true;
                         cerr << programName << ": Unexpected error file url: " << this_file->GetURL() << endl;
                 }
         } // end file iterator
@@ -265,6 +269,13 @@ int main(int argc, char **argv)
                 pqxx_interface.Commit();
 	}
 
-        return 0;
+	if(seen_failures)
+	{
+		return 1;
+	}
+	else
+	{
+        	return 0;
+	}
 }