diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index e3b6566bcf094fb3289e340ddde07f98a9a9e18d..23ba4253ed3bc90533d9e5cc4f7953dfeb45dc49 100644
--- a/apps/user_ldap/lib/access.php
+++ b/apps/user_ldap/lib/access.php
@@ -1298,6 +1298,12 @@ class Access extends LDAPUtility implements user\IUserTools {
 	 */
 	public function convertSID2Str($sid) {
 		try {
+			if(!function_exists('bcadd')) {
+				\OCP\Util::writeLog('user_ldap',
+					'You need to install bcmath module for PHP to have support ' .
+					'for AD primary groups', \OCP\Util::WARN);
+				throw new \Exception('missing bcmath module');
+			}
 			$srl = ord($sid[0]);
 			$numberSubID = ord($sid[1]);
 			$x = substr($sid, 2, 6);
diff --git a/apps/user_ldap/tests/access.php b/apps/user_ldap/tests/access.php
index 2ff7540b8eff81b10eb6183f0636a242b07070dc..e77aad769d45e01680b838f48bb1a57b5b323894 100644
--- a/apps/user_ldap/tests/access.php
+++ b/apps/user_ldap/tests/access.php
@@ -82,6 +82,10 @@ class Test_Access extends \PHPUnit_Framework_TestCase {
 		list($lw, $con, $um) = $this->getConnecterAndLdapMock();
 		$access = new Access($con, $lw, $um);
 
+		if(!function_exists('\bcadd')) {
+			$this->markTestSkipped('bcmath not available');
+		}
+
 		$sidBinary = file_get_contents(__DIR__ . '/data/sid.dat');
 		$sidExpected = 'S-1-5-21-249921958-728525901-1594176202';
 
@@ -92,12 +96,37 @@ class Test_Access extends \PHPUnit_Framework_TestCase {
 		list($lw, $con, $um) = $this->getConnecterAndLdapMock();
 		$access = new Access($con, $lw, $um);
 
+		if(!function_exists('\bcadd')) {
+			$this->markTestSkipped('bcmath not available');
+		}
+
 		$sidIllegal = 'foobar';
 		$sidExpected = '';
 
 		$this->assertSame($sidExpected, $access->convertSID2Str($sidIllegal));
 	}
 
+	public function testConvertSID2StrNoBCMath() {
+		if(function_exists('\bcadd')) {
+			$removed = false;
+			if(function_exists('runkit_function_remove')) {
+				$removed = !runkit_function_remove('\bcadd');
+			}
+			if(!$removed) {
+				$this->markTestSkipped('bcadd could not be removed for ' .
+					'testing without bcmath');
+			}
+		}
+
+		list($lw, $con, $um) = $this->getConnecterAndLdapMock();
+		$access = new Access($con, $lw, $um);
+
+		$sidBinary = file_get_contents(__DIR__ . '/data/sid.dat');
+		$sidExpected = '';
+
+		$this->assertSame($sidExpected, $access->convertSID2Str($sidBinary));
+	}
+
 	public function testGetDomainDNFromDNSuccess() {
 		list($lw, $con, $um) = $this->getConnecterAndLdapMock();
 		$access = new Access($con, $lw, $um);