Skip to content

Commit 32465dd

Browse files
committed
Fixed use of not initialized data, as shown by test bugs\gh_6785_test.py
Thanks to Pavel Zotov for reporting. There could be more such places. @asfernandes: please, check usage of QualifiedMetaString with gpre-processed fields.
1 parent 2c791d1 commit 32465dd

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

src/burp/restore.epp

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2483,7 +2483,7 @@ bool get_character_set(BurpGlobals* tdgbl)
24832483
{
24842484
};
24852485

2486-
QualifiedMetaString name;
2486+
QualifiedMetaString charset, collate;
24872487
att_type attribute;
24882488
scan_attr_t scan_next_attr;
24892489

@@ -2492,7 +2492,7 @@ bool get_character_set(BurpGlobals* tdgbl)
24922492
if (tdgbl->runtimeODS >= DB_VERSION_DDL12)
24932493
{
24942494
if (tdgbl->runtimeODS >= DB_VERSION_DDL14)
2495-
name.schema = PUBLIC_SCHEMA;
2495+
collate.schema = charset.schema = PUBLIC_SCHEMA;
24962496

24972497
bool securityClass = false;
24982498

@@ -2522,14 +2522,14 @@ bool get_character_set(BurpGlobals* tdgbl)
25222522
case att_charset_schema_name:
25232523
X.RDB$SCHEMA_NAME.NULL = FALSE;
25242524
GET_TEXT(X.RDB$SCHEMA_NAME);
2525-
name.schema = X.RDB$SCHEMA_NAME;
2525+
charset.schema = X.RDB$SCHEMA_NAME;
25262526
break;
25272527

25282528
case att_charset_name:
25292529
X.RDB$CHARACTER_SET_NAME.NULL = FALSE;
25302530
GET_TEXT(X.RDB$CHARACTER_SET_NAME);
2531-
name.object = X.RDB$CHARACTER_SET_NAME;
2532-
BURP_verbose(msgVerbose_restore_charset, name.toQuotedString());
2531+
charset.object = X.RDB$CHARACTER_SET_NAME;
2532+
BURP_verbose(msgVerbose_restore_charset, charset.toQuotedString());
25332533
break;
25342534

25352535
case att_charset_form:
@@ -2545,11 +2545,13 @@ bool get_character_set(BurpGlobals* tdgbl)
25452545
case att_charset_coll_schema_name:
25462546
X.RDB$DEFAULT_COLLATE_SCHEMA_NAME.NULL = FALSE;
25472547
GET_TEXT(X.RDB$DEFAULT_COLLATE_SCHEMA_NAME);
2548+
collate.schema = X.RDB$DEFAULT_COLLATE_SCHEMA_NAME;
25482549
break;
25492550

25502551
case att_charset_coll:
25512552
X.RDB$DEFAULT_COLLATE_NAME.NULL = FALSE;
25522553
GET_TEXT(X.RDB$DEFAULT_COLLATE_NAME);
2554+
collate.object = X.RDB$DEFAULT_COLLATE_NAME;
25532555
break;
25542556

25552557
case att_charset_id:
@@ -2609,10 +2611,7 @@ bool get_character_set(BurpGlobals* tdgbl)
26092611
if (X.RDB$CHARACTER_SET_ID.NULL && !X.RDB$DEFAULT_COLLATE_NAME.NULL &&
26102612
!X.RDB$CHARACTER_SET_NAME.NULL)
26112613
{
2612-
tdgbl->defaultCollations.put(
2613-
QualifiedMetaString(X.RDB$CHARACTER_SET_NAME, X.RDB$SCHEMA_NAME),
2614-
QualifiedMetaString(X.RDB$DEFAULT_COLLATE_NAME, X.RDB$DEFAULT_COLLATE_SCHEMA_NAME));
2615-
2614+
tdgbl->defaultCollations.put(charset, collate);
26162615
throw AbortException(); // prevent the STORE
26172616
}
26182617
}
@@ -2621,7 +2620,7 @@ bool get_character_set(BurpGlobals* tdgbl)
26212620
general_on_error ();
26222621
END_ERROR
26232622

2624-
collect_missing_privs(tdgbl, obj_charset, name, securityClass);
2623+
collect_missing_privs(tdgbl, obj_charset, charset, securityClass);
26252624
}
26262625
else
26272626
{
@@ -2646,8 +2645,8 @@ bool get_character_set(BurpGlobals* tdgbl)
26462645
case att_charset_name:
26472646
X.RDB$CHARACTER_SET_NAME.NULL = FALSE;
26482647
GET_TEXT(X.RDB$CHARACTER_SET_NAME);
2649-
name.object = X.RDB$CHARACTER_SET_NAME;
2650-
BURP_verbose(msgVerbose_restore_charset, name.toQuotedString());
2648+
charset.object = X.RDB$CHARACTER_SET_NAME;
2649+
BURP_verbose(msgVerbose_restore_charset, charset.toQuotedString());
26512650
break;
26522651

26532652
case att_charset_form:
@@ -2708,10 +2707,7 @@ bool get_character_set(BurpGlobals* tdgbl)
27082707
if (X.RDB$CHARACTER_SET_ID.NULL && !X.RDB$DEFAULT_COLLATE_NAME.NULL &&
27092708
!X.RDB$CHARACTER_SET_NAME.NULL)
27102709
{
2711-
tdgbl->defaultCollations.put(
2712-
QualifiedMetaString(X.RDB$CHARACTER_SET_NAME),
2713-
QualifiedMetaString(X.RDB$DEFAULT_COLLATE_NAME));
2714-
2710+
tdgbl->defaultCollations.put(charset, collate);
27152711
throw AbortException(); // prevent the STORE
27162712
}
27172713

0 commit comments

Comments
 (0)