mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-27 05:23:02 +01:00
Fixed a bug in one of my recent commits.
This commit is contained in:
parent
c6a8144cc4
commit
931ab84255
@ -112,7 +112,7 @@ void eat_blob(BurpGlobals* tdgbl);
|
|||||||
void eat_text(BurpGlobals* tdgbl);
|
void eat_text(BurpGlobals* tdgbl);
|
||||||
void eat_text2(BurpGlobals* tdgbl);
|
void eat_text2(BurpGlobals* tdgbl);
|
||||||
burp_rel* find_relation(BurpGlobals* tdgbl, const TEXT*);
|
burp_rel* find_relation(BurpGlobals* tdgbl, const TEXT*);
|
||||||
void fix_security_class_name(BurpGlobals* tdgbl, TEXT* sec_class);
|
void fix_security_class_name(BurpGlobals* tdgbl, TEXT* sec_class, bool is_field);
|
||||||
// CVC: when do these functions return false indeed???
|
// CVC: when do these functions return false indeed???
|
||||||
// get_acl and get_index are the only exceptions but ironically their
|
// get_acl and get_index are the only exceptions but ironically their
|
||||||
// returned value is not checked by the caller!
|
// returned value is not checked by the caller!
|
||||||
@ -1179,7 +1179,7 @@ burp_rel* find_relation(BurpGlobals* tdgbl, const TEXT* name)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fix_security_class_name(BurpGlobals* tdgbl, TEXT* sec_class)
|
void fix_security_class_name(BurpGlobals* tdgbl, TEXT* sec_class, bool is_field)
|
||||||
{
|
{
|
||||||
/**************************************
|
/**************************************
|
||||||
*
|
*
|
||||||
@ -1193,7 +1193,10 @@ void fix_security_class_name(BurpGlobals* tdgbl, TEXT* sec_class)
|
|||||||
*
|
*
|
||||||
**************************************/
|
**************************************/
|
||||||
|
|
||||||
if (strncmp(sec_class, SQL_SECCLASS_PREFIX, SQL_SECCLASS_PREFIX_LEN))
|
const char* const prefix = is_field ? SQL_FLD_SECCLASS_PREFIX : SQL_SECCLASS_PREFIX;
|
||||||
|
const int prefix_length = is_field ? SQL_FLD_SECCLASS_PREFIX_LEN : SQL_SECCLASS_PREFIX_LEN;
|
||||||
|
|
||||||
|
if (strncmp(sec_class, prefix, prefix_length))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (tdgbl->RESTORE_ods < DB_VERSION_DDL11_2)
|
if (tdgbl->RESTORE_ods < DB_VERSION_DDL11_2)
|
||||||
@ -1267,7 +1270,7 @@ void fix_security_class_name(BurpGlobals* tdgbl, TEXT* sec_class)
|
|||||||
|
|
||||||
fb_assert(id);
|
fb_assert(id);
|
||||||
|
|
||||||
snprintf(sec_class, MAX_SQL_IDENTIFIER_SIZE, "%s%"QUADFORMAT"d", SQL_SECCLASS_PREFIX, id);
|
snprintf(sec_class, MAX_SQL_IDENTIFIER_SIZE, "%s%"SQUADFORMAT, prefix, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void general_on_error()
|
void general_on_error()
|
||||||
@ -3153,7 +3156,7 @@ burp_fld* get_field(BurpGlobals* tdgbl, burp_rel* relation)
|
|||||||
|
|
||||||
case att_field_security_class:
|
case att_field_security_class:
|
||||||
GET_TEXT(X.RDB$SECURITY_CLASS);
|
GET_TEXT(X.RDB$SECURITY_CLASS);
|
||||||
fix_security_class_name(tdgbl, X.RDB$SECURITY_CLASS);
|
fix_security_class_name(tdgbl, X.RDB$SECURITY_CLASS, true);
|
||||||
X.RDB$SECURITY_CLASS.NULL = FALSE;
|
X.RDB$SECURITY_CLASS.NULL = FALSE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4931,7 +4934,7 @@ bool get_procedure(BurpGlobals* tdgbl)
|
|||||||
|
|
||||||
case att_procedure_security_class:
|
case att_procedure_security_class:
|
||||||
GET_TEXT(X.RDB$SECURITY_CLASS);
|
GET_TEXT(X.RDB$SECURITY_CLASS);
|
||||||
fix_security_class_name(tdgbl, X.RDB$SECURITY_CLASS);
|
fix_security_class_name(tdgbl, X.RDB$SECURITY_CLASS, false);
|
||||||
X.RDB$SECURITY_CLASS.NULL = FALSE;
|
X.RDB$SECURITY_CLASS.NULL = FALSE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -5042,7 +5045,7 @@ bool get_procedure(BurpGlobals* tdgbl)
|
|||||||
|
|
||||||
case att_procedure_security_class:
|
case att_procedure_security_class:
|
||||||
GET_TEXT(X.RDB$SECURITY_CLASS);
|
GET_TEXT(X.RDB$SECURITY_CLASS);
|
||||||
fix_security_class_name(tdgbl, X.RDB$SECURITY_CLASS);
|
fix_security_class_name(tdgbl, X.RDB$SECURITY_CLASS, false);
|
||||||
X.RDB$SECURITY_CLASS.NULL = FALSE;
|
X.RDB$SECURITY_CLASS.NULL = FALSE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -5441,7 +5444,7 @@ bool get_relation(BurpGlobals* tdgbl)
|
|||||||
case att_relation_security_class:
|
case att_relation_security_class:
|
||||||
sec_class_null = false;
|
sec_class_null = false;
|
||||||
GET_TEXT(sec_class);
|
GET_TEXT(sec_class);
|
||||||
fix_security_class_name(tdgbl, sec_class);
|
fix_security_class_name(tdgbl, sec_class, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case att_relation_view_blr:
|
case att_relation_view_blr:
|
||||||
|
@ -115,6 +115,8 @@ const int IMPLICIT_PK_PREFIX_LEN = 11;
|
|||||||
const char* const SQL_SECCLASS_GENERATOR = "RDB$SECURITY_CLASS";
|
const char* const SQL_SECCLASS_GENERATOR = "RDB$SECURITY_CLASS";
|
||||||
const char* const SQL_SECCLASS_PREFIX = "SQL$";
|
const char* const SQL_SECCLASS_PREFIX = "SQL$";
|
||||||
const int SQL_SECCLASS_PREFIX_LEN = 4;
|
const int SQL_SECCLASS_PREFIX_LEN = 4;
|
||||||
|
const char* const SQL_FLD_SECCLASS_PREFIX = "SQL$GRANT";
|
||||||
|
const int SQL_FLD_SECCLASS_PREFIX_LEN = 9;
|
||||||
|
|
||||||
// Automatically created check constraints for unnamed PRIMARY and UNIQUE declarations.
|
// Automatically created check constraints for unnamed PRIMARY and UNIQUE declarations.
|
||||||
const char* const IMPLICIT_INTEGRITY_PREFIX = "INTEG_";
|
const char* const IMPLICIT_INTEGRITY_PREFIX = "INTEG_";
|
||||||
|
Loading…
Reference in New Issue
Block a user