GoogleGit

commit86b16e8c0d353af97f0411917789308dba417295[log][tgz]
authorKenny Root <kroot@google.com>Mon Sep 09 11:15:54 2013 -0700
committerKenny Root <kroot@google.com>Mon Sep 09 13:27:53 2013 -0700
treea93101d8b6bc628a679a5d8d691a0c815a6cf061
parent47041552bd545846a1b7787823af4b5ca9e36dea[diff] [blame]
Move key name creation to common path

Bug: 10676015
Change-Id: I781e142217959a8a068844b9cb041282b8ae2a74
diff --git a/keystore/keystore.cpp b/keystore/keystore.cpp
index c890537..336a15b 100644
--- a/keystore/keystore.cpp
+++ b/keystore/keystore.cpp
@@ -272,13 +272,6 @@
     return length;
 }
 
-static int encode_key_for_uid(char* out, uid_t uid, const android::String8& keyName) {
-    int n = snprintf(out, NAME_MAX, "%u_", uid);
-    out += n;
-
-    return n + encode_key(out, keyName);
-}
-
 /*
  * Converts from the "escaped" format on disk to actual name.
  * This will be smaller than the input string.
@@ -1128,17 +1121,7 @@
 
     ResponseCode getKeyForName(Blob* keyBlob, const android::String8& keyName, const uid_t uid,
             const BlobType type) {
-        char filename[NAME_MAX];
-        encode_key_for_uid(filename, uid, keyName);
-
-        UserState* userState = getUserState(uid);
-        android::String8 filepath8;
-
-        filepath8 = android::String8::format("%s/%s", userState->getUserDirName(), filename);
-        if (filepath8.string() == NULL) {
-            ALOGW("can't create filepath for key %s", filename);
-            return SYSTEM_ERROR;
-        }
+        android::String8 filepath8(getKeyNameForUidWithDir(keyName, uid));
 
         ResponseCode responseCode = get(filepath8.string(), keyBlob, type, uid);
         if (responseCode == NO_ERROR) {
@@ -1148,8 +1131,7 @@
         // If this is one of the legacy UID->UID mappings, use it.
         uid_t euid = get_keystore_euid(uid);
         if (euid != uid) {
-            encode_key_for_uid(filename, euid, keyName);
-            filepath8 = android::String8::format("%s/%s", userState->getUserDirName(), filename);
+            filepath8 = getKeyNameForUidWithDir(keyName, euid);
             responseCode = get(filepath8.string(), keyBlob, type, uid);
             if (responseCode == NO_ERROR) {
                 return responseCode;
@@ -1157,13 +1139,14 @@
         }
 
         // They might be using a granted key.
-        encode_key(filename, keyName);
+        android::String8 filename8 = getKeyName(keyName);
         char* end;
-        strtoul(filename, &end, 10);
+        strtoul(filename8.string(), &end, 10);
         if (end[0] != '_' || end[1] == 0) {
             return KEY_NOT_FOUND;
         }
-        filepath8 = android::String8::format("%s/%s", userState->getUserDirName(), filename);
+        filepath8 = android::String8::format("%s/%s", getUserState(uid)->getUserDirName(),
+                filename8.string());
         if (!hasGrant(filepath8.string(), uid)) {
             return responseCode;
         }