From: Thomas Walker Lynch Date: Mon, 11 Mar 2019 00:32:08 +0000 (+0100) Subject: checkpoint X-Git-Url: https://git.reasoningtechnology.com/style/rt_dark_doc.css?a=commitdiff_plain;h=443c9131a496b3aef4d1e521920dc619fce31571;p=subu checkpoint --- diff --git a/src/5_scratch/subu-config.lib.h b/src/5_scratch/subu-config.lib.h index 873991f..482d289 100644 --- a/src/5_scratch/subu-config.lib.h +++ b/src/5_scratch/subu-config.lib.h @@ -1,9 +1,12 @@ /* This file was automatically generated. Do not edit! */ #undef INTERFACE #include +int subu_rm_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username); int subu_get_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char **subu_username); int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username); -int subu_number_get(sqlite3 *db,char **nsp,char **errmsg); +int subu_number_set(sqlite3 *db,int n); +int subu_number_get(sqlite3 *db,int *n); +int subu_number_next(sqlite3 *db,char **nsp,char **mess); typedef unsigned int uint; int schema(sqlite3 *db,uint max_subu_number); #define ERR_CONFIG_FILE 1 diff --git a/src/5_scratch/subu-get.cli.h b/src/5_scratch/subu-get.cli.h index 5944685..163709f 100644 --- a/src/5_scratch/subu-get.cli.h +++ b/src/5_scratch/subu-get.cli.h @@ -1,6 +1,6 @@ /* This file was automatically generated. Do not edit! */ #undef INTERFACE #include -int subu_get_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char **subu_username); +int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username); #define ERR_CONFIG_FILE 1 extern char Config_File[]; diff --git a/src/5_scratch/subu-mk-0.cli.h b/src/5_scratch/subu-mk-0.cli.h index 165741f..56f6cf6 100644 --- a/src/5_scratch/subu-mk-0.cli.h +++ b/src/5_scratch/subu-mk-0.cli.h @@ -7,4 +7,4 @@ void subu_err(char *fname,int err,char *mess); int subu_mk_0(char **mess,sqlite3 *db,char *subuname); #define SUBU_ERR_CONFIG_FILE 8 extern char Config_File[]; -#define SUBU_ERR_ARG_CNT 2 +#define SUBU_ERR_ARG_CNT 1 diff --git a/src/5_scratch/subu-number.cli.h b/src/5_scratch/subu-number.cli.h index 2e2e6fd..ac69056 100644 --- a/src/5_scratch/subu-number.cli.h +++ b/src/5_scratch/subu-number.cli.h @@ -1,6 +1,11 @@ /* This file was automatically generated. Do not edit! */ #undef INTERFACE #include -int subu_number_get(sqlite3 *db,char **nsp,char **errmsg); -#define ERR_CONFIG_FILE 1 +int subu_number_get(sqlite3 *db,int *n); +int subu_number_set(sqlite3 *db,int n); +#include +#include +#define SUBU_ERR_N 14 +#define SUBU_ERR_CONFIG_FILE 8 extern char Config_File[]; +#define SUBU_ERR_ARG_CNT 1 diff --git a/src/5_scratch/subu-rm.cli.h b/src/5_scratch/subu-rm.cli.h new file mode 100644 index 0000000..163709f --- /dev/null +++ b/src/5_scratch/subu-rm.cli.h @@ -0,0 +1,6 @@ +/* This file was automatically generated. Do not edit! */ +#undef INTERFACE +#include +int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username); +#define ERR_CONFIG_FILE 1 +extern char Config_File[]; diff --git a/src/5_scratch/subu.lib.h b/src/5_scratch/subu.lib.h index aa24bbc..199daab 100644 --- a/src/5_scratch/subu.lib.h +++ b/src/5_scratch/subu.lib.h @@ -1,6 +1,11 @@ /* This file was automatically generated. Do not edit! */ #undef INTERFACE #include +int subu_rm_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username); +int subu_get_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char **subu_username); +#include +#include +int subu_rm_0(char **mess,sqlite3 *db,char *subuname); int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username); #include #include @@ -10,25 +15,27 @@ void dispatch_f_mess(char *fname,int err,char *dispatchee); #define ERR_DISPATCH -1024 int dispatch_f_euid_egid(char *fname,int(*f)(void *arg),void *f_arg,uid_t euid,gid_t egid); int dbprintf(const char *format,...); -#include -#include int subu_mk_0(char **mess,sqlite3 *db,char *subuname); extern char Subuland_Extension[]; -int subu_number_get(sqlite3 *db,char **nsp,char **errmsg); +int subu_number_next(sqlite3 *db,char **nsp,char **mess); typedef unsigned int uint; extern uint Subuhome_Perms; extern char Config_File[]; void subu_err(char *fname,int err,char *mess); +#define SUBU_ERR_N 14 +#define SUBU_ERR_CONFIG_SUBU_NOT_FOUND 13 +#define SUBU_ERR_FAILED_USERDEL 12 #define SUBU_ERR_FAILED_USERADD 11 #define SUBU_ERR_BUG_SSS 10 #define SUBU_ERR_SUBUHOME_EXISTS 9 #define SUBU_ERR_CONFIG_FILE 8 #define SUBU_ERR_MASTERU_HOMELESS 7 -#define SUBU_ERR_SUBUNAME_MALFORMED 5 -#define SUBU_ERR_RMDIR_SUBUHOME 4 -#define SUBU_ERR_MKDIR_SUBUHOME 3 -#define SUBU_ERR_MALLOC 1 -#define SUBU_ERR_SETUID_ROOT 6 -#define SUBU_ERR_ARG_CNT 2 +#define SUBU_ERR_SUBUNAME_MALFORMED 6 +#define SUBU_ERR_RMDIR_SUBUHOME 5 +#define SUBU_ERR_MKDIR_SUBUHOME 4 +#define SUBU_ERR_MALLOC 3 +#define SUBU_ERR_SETUID_ROOT 2 +#define SUBU_ERR_ARG_CNT 1 +char *userdel_mess(int err); char *useradd_mess(int err); #define INTERFACE 0 diff --git a/src/subu-config.lib.c b/src/subu-config.lib.c index 1fc26eb..f459174 100644 --- a/src/subu-config.lib.c +++ b/src/subu-config.lib.c @@ -68,7 +68,7 @@ int subu_number_next(sqlite3 *db, char **nsp, char **mess){ return rc; } int subu_number_get(sqlite3 *db, int *n){ - char *sql = "SELECT value FROM Key_Int WHERE key = 'max_subu_number';" + char *sql = "SELECT value FROM Key_Int WHERE key = 'max_subu_number';"; sqlite3_stmt *stmt; sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); int rc = sqlite3_step(stmt); @@ -83,11 +83,12 @@ int subu_number_get(sqlite3 *db, int *n){ return rc; } int subu_number_set(sqlite3 *db, int n){ - char *sql = "UPDATE Key_Int SET value = ?1 WHERE key = 'max_subu_number';" + char *sql = "UPDATE Key_Int SET value = ?1 WHERE key = 'max_subu_number';"; sqlite3_stmt *stmt; sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); sqlite3_bind_int(stmt, 1, n); int rc = sqlite3_step(stmt); + sqlite3_finalize(stmt); return rc; } @@ -138,7 +139,7 @@ int subu_rm_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char * if( rc != SQLITE_OK ) return rc; sqlite3_bind_text(stmt, 1, masteru_name, -1, SQLITE_STATIC); sqlite3_bind_text(stmt, 2, subuname, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 3, sub_username, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, subu_username, -1, SQLITE_STATIC); rc = sqlite3_step(stmt); sqlite3_finalize(stmt); return rc; diff --git a/src/subu-number.cli.c b/src/subu-number.cli.c index 10a80c2..c4690e4 100644 --- a/src/subu-number.cli.c +++ b/src/subu-number.cli.c @@ -5,6 +5,7 @@ Set or get a new maximum subu number. Currently doesn't do the setting part. #include "subu-number.cli.h" #include #include +#include int main(int argc, char **argv){ @@ -24,7 +25,7 @@ int main(int argc, char **argv){ // then arg[1] holds a number to set the max to if(argc == 2){ - long int i = strlol(argc[1], NULL, 10); + long int i = strtol(argv[1], NULL, 10); if( i < 0 ){ fprintf(stderr, "n must be positive\n"); sqlite3_close(db); @@ -40,16 +41,17 @@ int main(int argc, char **argv){ } // read and print the current max - char *n; + int n; rc = subu_number_get(db, &n); if( rc == SQLITE_DONE ){ - printf("%s\n", n); + printf("%d\n", n); }else{ sqlite3_close(db); return SUBU_ERR_CONFIG_FILE; } - if( sqlite3_close(db) != SQLITE_OK ){ - fprintf(stderr, "error exit, strange, we could not close the configuration file\n"); + rc = sqlite3_close(db); + if( rc != SQLITE_OK ){ + fprintf(stderr, "when closing db, %s\n", sqlite3_errmsg(db)); return SUBU_ERR_CONFIG_FILE; } return 0; diff --git a/src/subu.lib.c b/src/subu.lib.c index 6574d89..03c248b 100644 --- a/src/subu.lib.c +++ b/src/subu.lib.c @@ -474,11 +474,10 @@ int subu_rm_0(char **mess, sqlite3 *db, char *subuname){ dbprintf("remove the masteru_name, subuname, subu_username relation\n"); #endif { - int ret = subu_rm_masteru_subu(db, masteru_name, subuname, ctxp->subu_username); + int ret = subu_rm_masteru_subu(db, masteru_name, subuname, subu_username); if( ret != SQLITE_DONE ){ - ctxp->err = SUBU_ERR_RM_0_CONFIG_FILE; - ctxp->aux = "insert of masteru subu relation failed"; - return ctxp; + if(mess)*mess = strdup("removal of masteru subu relation failed"); + RETURN(SUBU_ERR_CONFIG_FILE); } } @@ -490,7 +489,7 @@ int subu_rm_0(char **mess, sqlite3 *db, char *subuname){ #ifdef DEBUG dbprintf("as masteru, removing the directory \"%s\"\n", subuhome); #endif - int dispatch_err_rmdir = dispatch_f_euid_egid + int dispatch_err = dispatch_f_euid_egid ( "masteru_rmdir_subuhome", masteru_rmdir_subuhome, @@ -518,7 +517,7 @@ int subu_rm_0(char **mess, sqlite3 *db, char *subuname){ dbprintf("setting inherited real uid to 0 to accomodate SSS_CACHE UID BUG\n"); #endif if( setuid(0) == -1 ){ - ret = SUBU_ERR_RM_0_BUG_SSS; + ret = SUBU_ERR_BUG_SSS; RETURN(ret); } #endif @@ -543,9 +542,8 @@ int subu_rm_0(char **mess, sqlite3 *db, char *subuname){ } #ifdef DEBUG - dbprintf("finished subu-mk-0(%s)\n", subuname); + dbprintf("finished subu-rm-0(%s)\n", subuname); #endif - ctxp->err = 0; - return ctxp; + RETURN(0); } -#endif +