Changeset: c5f51089e9fa for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c5f51089e9fa Removed Files: sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.sql sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.err sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out monetdb5/ChangeLog monetdb5/mal/mal.c monetdb5/mal/mal_authorize.c monetdb5/mal/mal_authorize.h monetdb5/mal/mal_client.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/mal/mal_module.c monetdb5/mal/mal_parser.c monetdb5/mal/mal_session.c monetdb5/modules/atoms/batxml.c monetdb5/modules/atoms/inet.c monetdb5/modules/kernel/batcolor.c monetdb5/modules/kernel/batstr.c monetdb5/modules/mal/clients.c sql/backends/monet5/mal_backend.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_gencode.h sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/backends/monet5/sql_user.c sql/backends/monet5/sqlcatalog.mal sql/server/rel_psm.c sql/server/rel_schema.c sql/server/rel_sequence.c sql/storage/store.c sql/test/BugTracker-2009/Tests/All sql/test/BugTracker-2010/Tests/error-truncated.Bug-2615.stable.err.Darwin sql/test/BugTracker-2010/Tests/error-truncated.Bug-2615.stable.err.Windows sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit tools/merovingian/daemon/controlrunner.c tools/mserver/mserver5.c tools/mserver/shutdowntest.c Branch: batcalc-candidates Log Message:
Merge with default branch. diffs (truncated from 2532 to 300 lines): diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -8463,19 +8463,19 @@ Ready. [ "sqlblob", "sqlblob", "command sqlblob.sqlblob(s:str):sqlblob ", "BLOBsqlblob_fromstr;", "" ] [ "sqlcatalog", "alter_add_table", "pattern sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str, action:int):void ", "SQLalter_add_table;", "Catalog operation alter_add_table" ] [ "sqlcatalog", "alter_del_table", "pattern sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str, action:int):void ", "SQLalter_del_table;", "Catalog operation alter_del_table" ] -[ "sqlcatalog", "alter_seq", "pattern sqlcatalog.alter_seq(sname:str, seq:ptr, val:lng):void ", "SQLalter_seq;", "Catalog operation alter_seq" ] +[ "sqlcatalog", "alter_seq", "pattern sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:lng):void ", "SQLalter_seq;", "Catalog operation alter_seq" ] [ "sqlcatalog", "alter_set_table", "pattern sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ", "SQLalter_set_table;", "Catalog operation alter_set_table" ] -[ "sqlcatalog", "alter_table", "pattern sqlcatalog.alter_table(sname:str, tbl:ptr, action:int):void ", "SQLalter_table;", "Catalog operation alter_table" ] +[ "sqlcatalog", "alter_table", "pattern sqlcatalog.alter_table(sname:str, tname:str, tbl:ptr, action:int):void ", "SQLalter_table;", "Catalog operation alter_table" ] [ "sqlcatalog", "alter_user", "pattern sqlcatalog.alter_user(sname:str, passwrd:str, enc:int, schema:str, oldpasswrd:str):void ", "SQLalter_user;", "Catalog operation alter_user" ] -[ "sqlcatalog", "create_function", "pattern sqlcatalog.create_function(sname:str, fcn:ptr):void ", "SQLcreate_function;", "Catalog operation create_function" ] +[ "sqlcatalog", "create_function", "pattern sqlcatalog.create_function(sname:str, fname:str, fcn:ptr):void ", "SQLcreate_function;", "Catalog operation create_function" ] [ "sqlcatalog", "create_role", "pattern sqlcatalog.create_role(sname:str, role:str, grator:int):void ", "SQLcreate_role;", "Catalog operation create_role" ] [ "sqlcatalog", "create_schema", "pattern sqlcatalog.create_schema(sname:str, auth:str, action:int):void ", "SQLcreate_schema;", "Catalog operation create_schema" ] -[ "sqlcatalog", "create_seq", "pattern sqlcatalog.create_seq(sname:str, seq:ptr, action:int):void ", "SQLcreate_seq;", "Catalog operation create_seq" ] -[ "sqlcatalog", "create_table", "pattern sqlcatalog.create_table(sname:str, tbl:ptr, temp:int):void ", "SQLcreate_table;", "Catalog operation create_table" ] +[ "sqlcatalog", "create_seq", "pattern sqlcatalog.create_seq(sname:str, seqname:str, seq:ptr, action:int):void ", "SQLcreate_seq;", "Catalog operation create_seq" ] +[ "sqlcatalog", "create_table", "pattern sqlcatalog.create_table(sname:str, tname:str, tbl:ptr, temp:int):void ", "SQLcreate_table;", "Catalog operation create_table" ] [ "sqlcatalog", "create_trigger", "pattern sqlcatalog.create_trigger(sname:str, tname:str, triggername:str, time:int, orientation:int, event:int, old:str, new:str, cond:str, qry:str):void ", "SQLcreate_trigger;", "Catalog operation create_trigger" ] [ "sqlcatalog", "create_type", "pattern sqlcatalog.create_type(sname:str, nme:str, impl:str):void ", "SQLcreate_type;", "Catalog operation create_type" ] [ "sqlcatalog", "create_user", "pattern sqlcatalog.create_user(sname:str, passwrd:str, enc:int, schema:str, fullname:str):void ", "SQLcreate_user;", "Catalog operation create_user" ] -[ "sqlcatalog", "create_view", "pattern sqlcatalog.create_view(sname:str, tbl:ptr, temp:int):void ", "SQLcreate_view;", "Catalog operation create_view" ] +[ "sqlcatalog", "create_view", "pattern sqlcatalog.create_view(sname:str, vname:str, tbl:ptr, temp:int):void ", "SQLcreate_view;", "Catalog operation create_view" ] [ "sqlcatalog", "drop_constraint", "pattern sqlcatalog.drop_constraint(sname:str, name:str, action:int):void ", "SQLdrop_constraint;", "Catalog operation drop_constraint" ] [ "sqlcatalog", "drop_function", "pattern sqlcatalog.drop_function(sname:str, fname:str, fid:int, type:int, action:int):void ", "SQLdrop_function;", "Catalog operation drop_function" ] [ "sqlcatalog", "drop_index", "pattern sqlcatalog.drop_index(sname:str, iname:str, action:int):void ", "SQLdrop_index;", "Catalog operation drop_index" ] @@ -8654,8 +8654,6 @@ Ready. [ "url", "url", "command url.url(s:url):url ", "URLnoop;", "Create an URL from a string literal" ] [ "user", "main", "function user.main():void;", "", "" ] [ "user", "main", "function user.main():void;", "", "" ] -[ "user", "main", "function user.main():void;", "", "" ] -[ "user", "main", "function user.main():void;", "", "" ] [ "user", "s2_1", "function user.s2_1():void;", "", "" ] [ "uuid", "#cmp", "command uuid.#cmp():void ", "UUIDcompare;", "" ] [ "uuid", "#fromstr", "command uuid.#fromstr():void ", "UUIDfromString;", "" ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -10827,19 +10827,19 @@ Ready. [ "sqlblob", "sqlblob", "command sqlblob.sqlblob(s:str):sqlblob ", "BLOBsqlblob_fromstr;", "" ] [ "sqlcatalog", "alter_add_table", "pattern sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str, action:int):void ", "SQLalter_add_table;", "Catalog operation alter_add_table" ] [ "sqlcatalog", "alter_del_table", "pattern sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str, action:int):void ", "SQLalter_del_table;", "Catalog operation alter_del_table" ] -[ "sqlcatalog", "alter_seq", "pattern sqlcatalog.alter_seq(sname:str, seq:ptr, val:lng):void ", "SQLalter_seq;", "Catalog operation alter_seq" ] +[ "sqlcatalog", "alter_seq", "pattern sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:lng):void ", "SQLalter_seq;", "Catalog operation alter_seq" ] [ "sqlcatalog", "alter_set_table", "pattern sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ", "SQLalter_set_table;", "Catalog operation alter_set_table" ] -[ "sqlcatalog", "alter_table", "pattern sqlcatalog.alter_table(sname:str, tbl:ptr, action:int):void ", "SQLalter_table;", "Catalog operation alter_table" ] +[ "sqlcatalog", "alter_table", "pattern sqlcatalog.alter_table(sname:str, tname:str, tbl:ptr, action:int):void ", "SQLalter_table;", "Catalog operation alter_table" ] [ "sqlcatalog", "alter_user", "pattern sqlcatalog.alter_user(sname:str, passwrd:str, enc:int, schema:str, oldpasswrd:str):void ", "SQLalter_user;", "Catalog operation alter_user" ] -[ "sqlcatalog", "create_function", "pattern sqlcatalog.create_function(sname:str, fcn:ptr):void ", "SQLcreate_function;", "Catalog operation create_function" ] +[ "sqlcatalog", "create_function", "pattern sqlcatalog.create_function(sname:str, fname:str, fcn:ptr):void ", "SQLcreate_function;", "Catalog operation create_function" ] [ "sqlcatalog", "create_role", "pattern sqlcatalog.create_role(sname:str, role:str, grator:int):void ", "SQLcreate_role;", "Catalog operation create_role" ] [ "sqlcatalog", "create_schema", "pattern sqlcatalog.create_schema(sname:str, auth:str, action:int):void ", "SQLcreate_schema;", "Catalog operation create_schema" ] -[ "sqlcatalog", "create_seq", "pattern sqlcatalog.create_seq(sname:str, seq:ptr, action:int):void ", "SQLcreate_seq;", "Catalog operation create_seq" ] -[ "sqlcatalog", "create_table", "pattern sqlcatalog.create_table(sname:str, tbl:ptr, temp:int):void ", "SQLcreate_table;", "Catalog operation create_table" ] +[ "sqlcatalog", "create_seq", "pattern sqlcatalog.create_seq(sname:str, seqname:str, seq:ptr, action:int):void ", "SQLcreate_seq;", "Catalog operation create_seq" ] +[ "sqlcatalog", "create_table", "pattern sqlcatalog.create_table(sname:str, tname:str, tbl:ptr, temp:int):void ", "SQLcreate_table;", "Catalog operation create_table" ] [ "sqlcatalog", "create_trigger", "pattern sqlcatalog.create_trigger(sname:str, tname:str, triggername:str, time:int, orientation:int, event:int, old:str, new:str, cond:str, qry:str):void ", "SQLcreate_trigger;", "Catalog operation create_trigger" ] [ "sqlcatalog", "create_type", "pattern sqlcatalog.create_type(sname:str, nme:str, impl:str):void ", "SQLcreate_type;", "Catalog operation create_type" ] [ "sqlcatalog", "create_user", "pattern sqlcatalog.create_user(sname:str, passwrd:str, enc:int, schema:str, fullname:str):void ", "SQLcreate_user;", "Catalog operation create_user" ] -[ "sqlcatalog", "create_view", "pattern sqlcatalog.create_view(sname:str, tbl:ptr, temp:int):void ", "SQLcreate_view;", "Catalog operation create_view" ] +[ "sqlcatalog", "create_view", "pattern sqlcatalog.create_view(sname:str, vname:str, tbl:ptr, temp:int):void ", "SQLcreate_view;", "Catalog operation create_view" ] [ "sqlcatalog", "drop_constraint", "pattern sqlcatalog.drop_constraint(sname:str, name:str, action:int):void ", "SQLdrop_constraint;", "Catalog operation drop_constraint" ] [ "sqlcatalog", "drop_function", "pattern sqlcatalog.drop_function(sname:str, fname:str, fid:int, type:int, action:int):void ", "SQLdrop_function;", "Catalog operation drop_function" ] [ "sqlcatalog", "drop_index", "pattern sqlcatalog.drop_index(sname:str, iname:str, action:int):void ", "SQLdrop_index;", "Catalog operation drop_index" ] @@ -11019,8 +11019,6 @@ Ready. [ "url", "url", "command url.url(s:url):url ", "URLnoop;", "Create an URL from a string literal" ] [ "user", "main", "function user.main():void;", "", "" ] [ "user", "main", "function user.main():void;", "", "" ] -[ "user", "main", "function user.main():void;", "", "" ] -[ "user", "main", "function user.main():void;", "", "" ] [ "user", "s2_1", "function user.s2_1():void;", "", "" ] [ "uuid", "#cmp", "command uuid.#cmp():void ", "UUIDcompare;", "" ] [ "uuid", "#fromstr", "command uuid.#fromstr():void ", "UUIDfromString;", "" ] diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -740,19 +740,19 @@ str ALGunique1(bat *result, const bat *b str ALGunique2(bat *result, const bat *bid, const bat *sid); str ALGvariance(dbl *res, const bat *bid); str ALGvariancep(dbl *res, const bat *bid); -str AUTHaddUser(oid *ret, Client c, str *user, str *pass); -str AUTHchangePassword(Client c, str *oldpass, str *passwd); -str AUTHchangeUsername(Client c, str *olduser, str *newuser); -str AUTHcheckCredentials(oid *ret, Client c, str *user, str *passwd, str *challenge, str *algo); -str AUTHgetPasswordHash(str *ret, Client c, str *username); +str AUTHaddUser(oid *ret, Client c, const char *user, const char *pass); +str AUTHchangePassword(Client c, const char *oldpass, const char *passwd); +str AUTHchangeUsername(Client c, const char *olduser, const char *newuser); +str AUTHcheckCredentials(oid *ret, Client c, const char *user, const char *passwd, const char *challenge, const char *algo); +str AUTHgetPasswordHash(str *ret, Client c, const char *username); str AUTHgetUsername(str *ret, Client c); str AUTHgetUsers(BAT **ret1, BAT **ret2, Client c); -str AUTHinitTables(str *passwd); -str AUTHremoveUser(Client c, str *username); +str AUTHinitTables(const char *passwd); +str AUTHremoveUser(Client c, const char *username); void AUTHreset(void) __attribute__((__visibility__("hidden"))); -str AUTHresolveUser(str *ret, oid *uid); -str AUTHsetPassword(Client c, str *username, str *passwd); -str AUTHunlockVault(str *password); +str AUTHresolveUser(str *ret, oid uid); +str AUTHsetPassword(Client c, const char *username, const char *passwd); +str AUTHunlockVault(const char *password); str BATPCREilike(bat *ret, const bat *b, const str *pat, const str *esc); str BATPCREilike2(bat *ret, const bat *b, const str *pat); str BATPCRElike(bat *ret, const bat *b, const str *pat, const str *esc); @@ -1177,7 +1177,7 @@ str INETnetmask(inet *retval, const inet str INETnetwork(inet *retval, const inet *val); str INETnew(inet *retval, str *in); inet *INETnull(void); -str INETsetmasklen(inet *retval, const inet *val, const int *mask); +str INETsetmasklen(inet *retval, const inet *val, const int *msk); str INETtext(str *retval, const inet *val); int INETtoString(str *retval, int *len, const inet *handle); str INSPECTatom_names(bat *ret); @@ -2263,7 +2263,6 @@ MT_Lock mal_delayLock; void mal_exit(void); void mal_factory_reset(void) __attribute__((__visibility__("hidden"))); int mal_init(void); -void mal_instruction_reset(void); void mal_linker_reset(void) __attribute__((__visibility__("hidden"))); void mal_module_reset(void) __attribute__((__visibility__("hidden"))); void mal_namespace_reset(void) __attribute__((__visibility__("hidden"))); diff --git a/monetdb5/ChangeLog b/monetdb5/ChangeLog --- a/monetdb5/ChangeLog +++ b/monetdb5/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog file for MonetDB5 # This file is updated with Maddlog +* Thu Jan 5 2017 Sjoerd Mullender <sjo...@acm.org> +- Changed the interfaces of the AUTH* functions: pass values, not pointers + to values. + * Tue Dec 13 2016 Sjoerd Mullender <sjo...@acm.org> - Removed calc.setoid(). - group.subgroup is now called group.group if it is not refining a group. diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c --- a/monetdb5/mal/mal.c +++ b/monetdb5/mal/mal.c @@ -151,12 +151,12 @@ void mserver_reset(int exit) GDKfree(mal_clients->prompt); GDKfree(mal_clients->username); freeStack(mal_clients->glb); + freeSymbol(mal_clients->curprg); mal_client_reset(); mal_linker_reset(); mal_resource_reset(); mal_runtime_reset(); mal_module_reset(); - mal_instruction_reset(); memset((char*)monet_cwd,0, sizeof(monet_cwd)); monet_memory = 0; diff --git a/monetdb5/mal/mal_authorize.c b/monetdb5/mal/mal_authorize.c --- a/monetdb5/mal/mal_authorize.c +++ b/monetdb5/mal/mal_authorize.c @@ -39,9 +39,9 @@ #endif #endif -static str AUTHdecypherValue(str *ret, str *value); -static str AUTHcypherValue(str *ret, str *value); -static str AUTHverifyPassword(str *passwd); +static str AUTHdecypherValue(str *ret, const char *value); +static str AUTHcypherValue(str *ret, const char *value); +static str AUTHverifyPassword(const char *passwd); static BAT *user = NULL; static BAT *pass = NULL; @@ -74,7 +74,7 @@ AUTHfindUser(const char *username) if (BUNfnd(duser, &pos) == BUN_NONE) return p; } - } + } return BUN_NONE; } @@ -91,12 +91,13 @@ AUTHrequireAdmin(Client cntxt) { id = cntxt->user; if (id != 0) { - char u[BUFSIZ] = ""; - str user = u; + str user = NULL; str tmp; - rethrow("requireAdmin", tmp, AUTHresolveUser(&user, &id)); - throw(INVCRED, "requireAdmin", INVCRED_ACCESS_DENIED " '%s'", user); + rethrow("requireAdmin", tmp, AUTHresolveUser(&user, id)); + tmp = createException(INVCRED, "requireAdmin", INVCRED_ACCESS_DENIED " '%s'", user); + GDKfree(user); + return tmp; } return(MAL_SUCCEED); @@ -108,20 +109,21 @@ AUTHrequireAdmin(Client cntxt) { * InvalidCredentialsException. */ static str -AUTHrequireAdminOrUser(Client cntxt, str *username) { +AUTHrequireAdminOrUser(Client cntxt, const char *username) { oid id = cntxt->user; - char u[BUFSIZ] = ""; - str user = u; + str user = NULL; str tmp = MAL_SUCCEED; /* root? then all is well */ if (id == 0) return(MAL_SUCCEED); - rethrow("requireAdminOrUser", tmp, AUTHresolveUser(&user, &id)); - if (username == NULL || *username == NULL || strcmp(*username, user) != 0) { + rethrow("requireAdminOrUser", tmp, AUTHresolveUser(&user, id)); + if (username == NULL || strcmp(username, user) != 0) { + GDKfree(user); throw(INVCRED, "requireAdminOrUser", INVCRED_ACCESS_DENIED " '%s'", user); } + GDKfree(user); return(MAL_SUCCEED); } @@ -152,7 +154,7 @@ AUTHcommit(void) * after the GDK kernel has been initialized. */ str -AUTHinitTables(str *passwd) { +AUTHinitTables(const char *passwd) { bat bid; int isNew = 1; str msg = MAL_SUCCEED; @@ -224,15 +226,14 @@ AUTHinitTables(str *passwd) { if (isNew == 1) { /* insert the monetdb/monetdb administrator account on a * complete fresh and new auth tables system */ - str user = "monetdb"; - str pw = "monetdb"; + char *pw; oid uid; Client c = &mal_clients[0]; - if (passwd != NULL && *passwd != NULL) - pw = *passwd; - pw = mcrypt_BackendSum(pw, strlen(pw)); - msg = AUTHaddUser(&uid, c, &user, &pw); + if (passwd == NULL) + passwd = "monetdb"; /* default password */ + pw = mcrypt_BackendSum(passwd, strlen(passwd)); + msg = AUTHaddUser(&uid, c, "monetdb", pw); free(pw); if (msg) return msg; @@ -252,10 +253,10 @@ str AUTHcheckCredentials( oid *uid, Client cntxt, - str *username, - str *passwd, - str *challenge, - str *algo) + const char *username, + const char *passwd, + const char *challenge, + const char *algo) { str tmp; str pwd = NULL; @@ -267,21 +268,21 @@ AUTHcheckCredentials( assert(user); assert(pass); - if (*username == NULL || strNil(*username)) + if (username == NULL || strNil(username)) throw(INVCRED, "checkCredentials", "invalid credentials for unknown user"); - p = AUTHfindUser(*username); + p = AUTHfindUser(username); if (p == BUN_NONE) { /* DO NOT reveal that the user doesn't exist here! */ - throw(INVCRED, "checkCredentials", INVCRED_INVALID_USER " '%s'", *username); + throw(INVCRED, "checkCredentials", INVCRED_INVALID_USER " '%s'", username); } /* a NULL password is impossible (since we should be dealing with * hashes here) so we can bail out immediately */ - if (*passwd == NULL || strNil(*passwd)) { + if (passwd == NULL || strNil(passwd)) { /* DO NOT reveal that the password is NULL here! */ - throw(INVCRED, "checkCredentials", INVCRED_INVALID_USER " '%s'", *username); + throw(INVCRED, "checkCredentials", INVCRED_INVALID_USER " '%s'", username); } /* find the corresponding password to the user */ @@ -289,15 +290,15 @@ AUTHcheckCredentials( _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list