X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/84aacf34eae6543be9f0280b2015385f91e5c2c6..b54c578e17e9bcbd74aa30ea75e25e955b9a6205:/SecurityTool/db_commands.cpp diff --git a/SecurityTool/db_commands.cpp b/SecurityTool/db_commands.cpp deleted file mode 100644 index 381501f9..00000000 --- a/SecurityTool/db_commands.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (c) 2003-2005,2012,2014 Apple Inc. All Rights Reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - * - * db_commands.cpp -- commands to directly manipulate Db's using the DL API. - */ - -#include "db_commands.h" - -#include "readline_cssm.h" -#include "security_tool.h" - -#include -#include -#include -#include - -using namespace CssmClient; - -static int -do_db_create(const CSSM_GUID guid, const char *dbname, Boolean do_openparams, Boolean do_autocommit, Boolean do_mode, mode_t mode, Boolean do_version_0_params) -{ - int result = 0; - - try - { - CSSM_APPLEDL_OPEN_PARAMETERS openParameters = { sizeof(CSSM_APPLEDL_OPEN_PARAMETERS), - (do_version_0_params ? 0 : CSSM_APPLEDL_OPEN_PARAMETERS_VERSION) }; - Cssm cssm; - Module module(guid, cssm); - DL dl(module); - Db db(dl, dbname); - - if (do_openparams) - { - openParameters.autoCommit = do_autocommit; - if (!do_version_0_params && do_mode) - { - openParameters.mask |= kCSSM_APPLEDL_MASK_MODE; - openParameters.mode = mode; - } - - db->openParameters(&openParameters); - } - - db->create(); - } - catch (const CommonError &e) - { - OSStatus status = e.osStatus(); - sec_error("CSSM_DbCreate %s: %s", dbname, sec_errstr(status)); - } - catch (...) - { - result = 1; - } - - return result; -} - -static int -parse_guid(const char *name, CSSM_GUID *guid) -{ - size_t len = strlen(name); - - if (!strncmp("dl", name, len)) - *guid = gGuidAppleFileDL; - else if (!strncmp("cspdl", name, len)) - *guid = gGuidAppleCSPDL; - else - { - sec_error("Invalid guid: %s", name); - return SHOW_USAGE_MESSAGE; - } - - return 0; -} - - -static int -parse_mode(const char *name, mode_t *pmode) -{ - int result = 0; - mode_t mode = 0; - const char *p; - - if (!name || !pmode || *name != '0') - { - result = 2; - goto loser; - } - - for (p = name + 1; *p; ++p) - { - if (*p < '0' || *p > '7') - { - result = 2; - goto loser; - } - - mode = (mode << 3) + *p - '0'; - } - - *pmode = mode; - return 0; - -loser: - sec_error("Invalid mode: %s", name); - return result; -} - -int -db_create(int argc, char * const *argv) -{ - int free_dbname = 0; - char *dbname = NULL; - int ch, result = 0; - bool do_autocommit = true, do_mode = false; - bool do_openparams = false, do_version_0_params = false; - mode_t mode = 0666; - CSSM_GUID guid = gGuidAppleFileDL; - - while ((ch = getopt(argc, argv, "0ahg:m:o")) != -1) - { - switch (ch) - { - case '0': - do_version_0_params = true; - do_openparams = true; - break; - case 'a': - do_autocommit = false; - do_openparams = true; - break; - case 'g': - result = parse_guid(optarg, &guid); - if (result) - goto loser; - break; - case 'm': - result = parse_mode(optarg, &mode); - if (result) - goto loser; - do_mode = true; - do_openparams = true; - break; - case 'o': - do_openparams = true; - break; - case '?': - default: - return SHOW_USAGE_MESSAGE; - } - } - - argc -= optind; - argv += optind; - - if (argc > 0) - dbname = *argv; - else - { - fprintf(stderr, "db to create: "); - dbname = readline(NULL, 0); - if (!dbname) - { - result = -1; - goto loser; - } - - free_dbname = 1; - if (*dbname == '\0') - goto loser; - } - - do - { - result = do_db_create(guid, dbname, do_openparams, do_autocommit, do_mode, mode, do_version_0_params); - if (result) - goto loser; - - argc--; - argv++; - dbname = *argv; - } while (argc > 0); - -loser: - if (free_dbname) - free(dbname); - - return result; -}