Author: jerry Date: 2005-08-29 17:48:01 +0000 (Mon, 29 Aug 2005) New Revision: 9752
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9752 Log: figured out why talloc_steal() is a bad idea for SEC_DESC* Add a comment so someone else doesn't get bitten by this as well. Modified: branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c trunk/source/rpc_server/srv_spoolss_nt.c Changeset: Modified: branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c =================================================================== --- branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c 2005-08-29 17:31:19 UTC (rev 9751) +++ branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c 2005-08-29 17:48:01 UTC (rev 9752) @@ -4171,7 +4171,11 @@ if ( ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->len != 0 ) { - printer->secdesc = dup_sec_desc( get_talloc_ctx(), ntprinter->info_2->secdesc_buf->sec ); + /* don't use talloc_steal() here unless you do a deep steal of all + the SEC_DESC members */ + + printer->secdesc = dup_sec_desc( get_talloc_ctx(), + ntprinter->info_2->secdesc_buf->sec ); } free_a_printer(&ntprinter, 2); @@ -4205,7 +4209,11 @@ printer->flags = 0x4; if (ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->len != 0) { - printer->secdesc = dup_sec_desc( get_talloc_ctx(), ntprinter->info_2->secdesc_buf->sec ); + /* don't use talloc_steal() here unless you do a deep steal of all + the SEC_DESC members */ + + printer->secdesc = dup_sec_desc( get_talloc_ctx(), + ntprinter->info_2->secdesc_buf->sec ); } free_a_printer(&ntprinter, 2); Modified: trunk/source/rpc_server/srv_spoolss_nt.c =================================================================== --- trunk/source/rpc_server/srv_spoolss_nt.c 2005-08-29 17:31:19 UTC (rev 9751) +++ trunk/source/rpc_server/srv_spoolss_nt.c 2005-08-29 17:48:01 UTC (rev 9752) @@ -4171,7 +4171,11 @@ if ( ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->len != 0 ) { - printer->secdesc = dup_sec_desc( get_talloc_ctx(), ntprinter->info_2->secdesc_buf->sec ); + /* don't use talloc_steal() here unless you do a deep steal of all + the SEC_DESC members */ + + printer->secdesc = dup_sec_desc( get_talloc_ctx(), + ntprinter->info_2->secdesc_buf->sec ); } free_a_printer(&ntprinter, 2); @@ -4205,7 +4209,11 @@ printer->flags = 0x4; if (ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->len != 0) { - printer->secdesc = dup_sec_desc( get_talloc_ctx(), ntprinter->info_2->secdesc_buf->sec ); + /* don't use talloc_steal() here unless you do a deep steal of all + the SEC_DESC members */ + + printer->secdesc = dup_sec_desc( get_talloc_ctx(), + ntprinter->info_2->secdesc_buf->sec ); } free_a_printer(&ntprinter, 2);
