diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.1.2.1
+
+* Fix bystestring-valued connectOptions sometimes not being null terminated at the correct place (avoid unsafeUseAsCString).
+
 ## 0.1.2
 
 * Fix setup for cabal 1.24
diff --git a/Database/MySQL/Base/C.hsc b/Database/MySQL/Base/C.hsc
--- a/Database/MySQL/Base/C.hsc
+++ b/Database/MySQL/Base/C.hsc
@@ -69,7 +69,6 @@
 #include "mysql.h"
 
 import Data.ByteString (useAsCString)
-import Data.ByteString.Unsafe (unsafeUseAsCString)
 import Database.MySQL.Base.Types
 import Foreign.C.String (CString, withCString)
 ##if __GLASGOW_HASKELL__ >= 704
@@ -98,7 +97,7 @@
       ReadDefaultFile path ->
         withCString path $ go (#const MYSQL_READ_DEFAULT_FILE)
       ReadDefaultGroup group ->
-        unsafeUseAsCString group $ go (#const MYSQL_READ_DEFAULT_GROUP)
+        useAsCString group $ go (#const MYSQL_READ_DEFAULT_GROUP)
       CharsetDir path ->
         withCString path $ go (#const MYSQL_SET_CHARSET_DIR)
       CharsetName cs ->
@@ -108,7 +107,7 @@
       Protocol proto ->
         withIntegral (fromEnum proto) $ go (#const MYSQL_OPT_PROTOCOL)
       SharedMemoryBaseName name ->
-        unsafeUseAsCString name $ go (#const MYSQL_SHARED_MEMORY_BASE_NAME)
+        useAsCString name $ go (#const MYSQL_SHARED_MEMORY_BASE_NAME)
       ReadTimeout secs ->
         withIntegral secs $ go (#const MYSQL_OPT_READ_TIMEOUT)
       WriteTimeout secs ->
@@ -120,7 +119,7 @@
       GuessConnection ->
         go (#const MYSQL_OPT_GUESS_CONNECTION) nullPtr
       ClientIP ip ->
-        unsafeUseAsCString ip $ go (#const MYSQL_SET_CLIENT_IP)
+        useAsCString ip $ go (#const MYSQL_SET_CLIENT_IP)
       SecureAuth b ->
         withBool b $ go (#const MYSQL_SECURE_AUTH)
       ReportDataTruncation b ->
diff --git a/mysql.cabal b/mysql.cabal
--- a/mysql.cabal
+++ b/mysql.cabal
@@ -1,5 +1,5 @@
 name:           mysql
-version:        0.1.2
+version:        0.1.2.1
 homepage:       https://github.com/paul-rouse/mysql
 bug-reports:    https://github.com/paul-rouse/mysql/issues
 synopsis:       A low-level MySQL client library.
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -1,17 +1,22 @@
 {-# LANGUAGE OverloadedStrings          #-}
 
 import Control.Exception     (bracket)
-import Database.MySQL.Base   (ConnectInfo (..), defaultConnectInfo,
+import Database.MySQL.Base   (ConnectInfo (..), defaultConnectInfo, Option (..),
                               connect, close,
                               query, useResult, fetchRow)
 import Test.Hspec
 
 -- This is how to connect to our test database
+-- Options with bytestring values are given to partially test #17 and #23
 testConn :: ConnectInfo
 testConn = defaultConnectInfo {
                connectHost     = "127.0.0.1",
                connectUser     = "test",
-               connectDatabase = "test"
+               connectDatabase = "test",
+               connectOptions  = [
+                   InitCommand "SET SESSION sql_mode = 'STRICT_ALL_TABLES';"
+                 , ReadDefaultGroup "client"
+               ]
            }
 
 -- Only the most cursory test is done at the moment, simply showing that
