Make semaphore_free idempotent

Passing NULL before would lead to a segfault.
diff --git a/osi/src/semaphore.c b/osi/src/semaphore.c
index 123469f..e27e201 100644
--- a/osi/src/semaphore.c
+++ b/osi/src/semaphore.c
@@ -51,6 +51,9 @@
 }
 
 void semaphore_free(semaphore_t *semaphore) {
+  if (!semaphore)
+    return;
+
   if (semaphore->fd != INVALID_FD)
     close(semaphore->fd);
   osi_free(semaphore);