Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd0071f9

Browse files
committed
pgcrypto: Fix incorrect argument vs PG_GETARG*() mappings
The following functions use a mix of bytea and text arguments, but theirC internals always used PG_GETARG_BYTEA_PP(), creating an incorrect mixwith the argument types expected by encrypt_internal():- pgp_sym_encrypt_bytea(bytea,text[,text])- pgp_sym_encrypt(text,text[,text])- pgp_sym_decrypt_bytea(bytea,text[,text])- pgp_sym_decrypt(bytea,text[,text])- pgp_pub_encrypt_bytea(bytea,bytea[,text])- pgp_pub_encrypt(text,bytea[,text])- pgp_pub_decrypt_bytea(bytea, bytea[,text[,text]])- pgp_pub_decrypt(bytea,bytea[,text[,text]])This commit fixes the inconsistencies between the PG_GETARG*() macrosand the argument types of each function.Both BYTEA_PP() and TEXT_PP() rely on PG_DETOAST_DATUM_PACKED(), thatreturns an unaligned pointer, so this was not leading to an actualproblem as far as I know, but let's be consistent.Author: Shihao ZhongDiscussion:https://postgr.es/m/CAGRkXqRfiWT--DzVPx_UGpNHTt0YT5Jo8eV2CtT56jNP=QpXSQ@mail.gmail.com
1 parentf854dae commitd0071f9

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

‎contrib/pgcrypto/pgp-pgsql.c

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -553,15 +553,15 @@ decrypt_internal(int is_pubenc, int need_text, text *data,
553553
Datum
554554
pgp_sym_encrypt_bytea(PG_FUNCTION_ARGS)
555555
{
556-
bytea*data,
557-
*key;
556+
bytea*data;
558557
text*arg=NULL;
559-
text*res;
558+
text*res,
559+
*key;
560560

561561
data=PG_GETARG_BYTEA_PP(0);
562-
key=PG_GETARG_BYTEA_PP(1);
562+
key=PG_GETARG_TEXT_PP(1);
563563
if (PG_NARGS()>2)
564-
arg=PG_GETARG_BYTEA_PP(2);
564+
arg=PG_GETARG_TEXT_PP(2);
565565

566566
res=encrypt_internal(0,0,data,key,arg);
567567

@@ -575,15 +575,15 @@ pgp_sym_encrypt_bytea(PG_FUNCTION_ARGS)
575575
Datum
576576
pgp_sym_encrypt_text(PG_FUNCTION_ARGS)
577577
{
578-
bytea*data,
578+
text*data,
579579
*key;
580580
text*arg=NULL;
581581
text*res;
582582

583-
data=PG_GETARG_BYTEA_PP(0);
584-
key=PG_GETARG_BYTEA_PP(1);
583+
data=PG_GETARG_TEXT_PP(0);
584+
key=PG_GETARG_TEXT_PP(1);
585585
if (PG_NARGS()>2)
586-
arg=PG_GETARG_BYTEA_PP(2);
586+
arg=PG_GETARG_TEXT_PP(2);
587587

588588
res=encrypt_internal(0,1,data,key,arg);
589589

@@ -598,15 +598,15 @@ pgp_sym_encrypt_text(PG_FUNCTION_ARGS)
598598
Datum
599599
pgp_sym_decrypt_bytea(PG_FUNCTION_ARGS)
600600
{
601-
bytea*data,
602-
*key;
601+
bytea*data;
603602
text*arg=NULL;
604-
text*res;
603+
text*res,
604+
*key;
605605

606606
data=PG_GETARG_BYTEA_PP(0);
607-
key=PG_GETARG_BYTEA_PP(1);
607+
key=PG_GETARG_TEXT_PP(1);
608608
if (PG_NARGS()>2)
609-
arg=PG_GETARG_BYTEA_PP(2);
609+
arg=PG_GETARG_TEXT_PP(2);
610610

611611
res=decrypt_internal(0,0,data,key,NULL,arg);
612612

@@ -620,15 +620,15 @@ pgp_sym_decrypt_bytea(PG_FUNCTION_ARGS)
620620
Datum
621621
pgp_sym_decrypt_text(PG_FUNCTION_ARGS)
622622
{
623-
bytea*data,
624-
*key;
623+
bytea*data;
625624
text*arg=NULL;
626-
text*res;
625+
text*res,
626+
*key;
627627

628628
data=PG_GETARG_BYTEA_PP(0);
629-
key=PG_GETARG_BYTEA_PP(1);
629+
key=PG_GETARG_TEXT_PP(1);
630630
if (PG_NARGS()>2)
631-
arg=PG_GETARG_BYTEA_PP(2);
631+
arg=PG_GETARG_TEXT_PP(2);
632632

633633
res=decrypt_internal(0,1,data,key,NULL,arg);
634634

@@ -654,7 +654,7 @@ pgp_pub_encrypt_bytea(PG_FUNCTION_ARGS)
654654
data=PG_GETARG_BYTEA_PP(0);
655655
key=PG_GETARG_BYTEA_PP(1);
656656
if (PG_NARGS()>2)
657-
arg=PG_GETARG_BYTEA_PP(2);
657+
arg=PG_GETARG_TEXT_PP(2);
658658

659659
res=encrypt_internal(1,0,data,key,arg);
660660

@@ -668,15 +668,15 @@ pgp_pub_encrypt_bytea(PG_FUNCTION_ARGS)
668668
Datum
669669
pgp_pub_encrypt_text(PG_FUNCTION_ARGS)
670670
{
671-
bytea*data,
672-
*key;
671+
bytea*key;
673672
text*arg=NULL;
674-
text*res;
673+
text*res,
674+
*data;
675675

676-
data=PG_GETARG_BYTEA_PP(0);
676+
data=PG_GETARG_TEXT_PP(0);
677677
key=PG_GETARG_BYTEA_PP(1);
678678
if (PG_NARGS()>2)
679-
arg=PG_GETARG_BYTEA_PP(2);
679+
arg=PG_GETARG_TEXT_PP(2);
680680

681681
res=encrypt_internal(1,1,data,key,arg);
682682

@@ -700,9 +700,9 @@ pgp_pub_decrypt_bytea(PG_FUNCTION_ARGS)
700700
data=PG_GETARG_BYTEA_PP(0);
701701
key=PG_GETARG_BYTEA_PP(1);
702702
if (PG_NARGS()>2)
703-
psw=PG_GETARG_BYTEA_PP(2);
703+
psw=PG_GETARG_TEXT_PP(2);
704704
if (PG_NARGS()>3)
705-
arg=PG_GETARG_BYTEA_PP(3);
705+
arg=PG_GETARG_TEXT_PP(3);
706706

707707
res=decrypt_internal(1,0,data,key,psw,arg);
708708

@@ -727,9 +727,9 @@ pgp_pub_decrypt_text(PG_FUNCTION_ARGS)
727727
data=PG_GETARG_BYTEA_PP(0);
728728
key=PG_GETARG_BYTEA_PP(1);
729729
if (PG_NARGS()>2)
730-
psw=PG_GETARG_BYTEA_PP(2);
730+
psw=PG_GETARG_TEXT_PP(2);
731731
if (PG_NARGS()>3)
732-
arg=PG_GETARG_BYTEA_PP(3);
732+
arg=PG_GETARG_TEXT_PP(3);
733733

734734
res=decrypt_internal(1,1,data,key,psw,arg);
735735

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp