2005-05-17 16:17:42 +04:00
#!/usr/bin/perl
# Simple tests for pidl's handling of ref pointers, based
# on tridge's ref_notes.txt
2005-05-17 19:51:35 +04:00
# (C) 2005 Jelmer Vernooij <jelmer@samba.org>.
# Published under the GNU General Public License.
2005-05-17 16:17:42 +04:00
use strict ;
2019-11-30 12:34:54 +03:00
use warnings ;
2005-05-17 16:17:42 +04:00
2006-03-24 00:47:16 +03:00
use Test::More tests = > 22 * 8 ;
2005-12-25 06:04:13 +03:00
use FindBin qw( $RealBin ) ;
use lib "$RealBin" ;
use Util qw( test_samba4_ndr ) ;
2005-05-17 16:17:42 +04:00
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "noptr-push" ,
2005-05-17 16:17:42 +04:00
' typedef struct {
uint16 x ;
} xstruct ;
[ public ] uint16 echo_TestRef ( [ in ] xstruct foo ) ;
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
uint16_t v = 13 ;
struct echo_TestRef r ;
r . in . foo . x = v ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) ) {
2005-05-17 17:19:40 +04:00
fprintf ( stderr , "push failed\n" ) ;
2005-05-17 16:17:42 +04:00
return 1 ;
2005-05-17 17:19:40 +04:00
}
2005-05-17 16:17:42 +04:00
2005-05-17 17:19:40 +04:00
if ( ndr - > offset != 2 ) {
fprintf ( stderr , "Offset(%d) != 2\n" , ndr - > offset ) ;
2005-05-17 16:17:42 +04:00
return 2 ;
2005-05-17 17:19:40 +04:00
}
2005-05-17 16:17:42 +04:00
2005-05-17 17:19:40 +04:00
if ( ndr - > data [ 0 ] != 13 || ndr - > data [ 1 ] != 0 ) {
fprintf ( stderr , "Data incorrect\n" ) ;
2005-05-17 16:17:42 +04:00
return 3 ;
2005-05-17 17:19:40 +04:00
}
2005-05-17 16:17:42 +04:00
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-embedded-push" ,
2005-05-17 16:17:42 +04:00
' typedef struct {
2005-05-17 17:19:40 +04:00
uint16 * x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in ] xstruct foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
uint16_t v = 13 ;
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
r . in . foo . x = & v ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
if ( ndr - > offset != 6 )
return 2 ;
if ( ndr - > data [ 0 ] == 0 && ndr - > data [ 1 ] == 0 &&
ndr - > data [ 2 ] == 0 && ndr - > data [ 3 ] == 0 )
return 3 ;
if ( ndr - > data [ 4 ] != 13 || ndr - > data [ 5 ] != 0 )
return 4 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-embedded-push-null" ,
2005-05-17 16:17:42 +04:00
' typedef struct {
2005-05-17 17:19:40 +04:00
uint16 * x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in ] xstruct foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
r . in . foo . x = NULL ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
if ( ndr - > offset != 4 )
return 2 ;
if ( ndr - > data [ 0 ] != 0 || ndr - > data [ 1 ] != 0 ||
ndr - > data [ 2 ] != 0 || ndr - > data [ 3 ] != 0 )
return 3 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-embedded-push" ,
2005-05-17 16:17:42 +04:00
'
typedef struct {
2005-05-17 17:19:40 +04:00
[ ref ] uint16 * x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in ] xstruct foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
uint16_t v = 13 ;
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
r . in . foo . x = & v ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
if ( ndr - > offset != 6 )
return 2 ;
if ( ndr - > data [ 0 ] == 0 && ndr - > data [ 1 ] == 0 &&
ndr - > data [ 2 ] == 0 && ndr - > data [ 3 ] == 0 )
return 3 ;
if ( ndr - > data [ 4 ] != 13 || ndr - > data [ 5 ] != 0 )
return 4 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-embedded-push-null" ,
2005-05-17 16:17:42 +04:00
'
typedef struct {
2005-05-17 17:19:40 +04:00
[ ref ] uint16 * x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in ] xstruct foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
r . in . foo . x = NULL ;
2007-11-09 21:23:25 +03:00
if ( NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
/* Windows gives [client runtime error 0x6f4] */
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-top-push" ,
2005-05-17 16:17:42 +04:00
'
typedef struct {
2005-05-17 17:19:40 +04:00
uint16 x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in ] xstruct * foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
struct xstruct s ;
s . x = 13 ;
r . in . foo = & s ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
if ( ndr - > offset != 2 )
return 2 ;
if ( ndr - > data [ 0 ] != 13 || ndr - > data [ 1 ] != 0 )
return 3 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-top-push-null" ,
2005-05-17 16:17:42 +04:00
'
typedef struct {
2005-05-17 17:19:40 +04:00
uint16 x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in ] xstruct * foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
r . in . foo = NULL ;
2007-11-09 21:23:25 +03:00
if ( NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
/* Windows gives [client runtime error 0x6f4] */
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-top-push" ,
2005-05-17 16:17:42 +04:00
'
typedef struct {
2005-05-17 17:19:40 +04:00
uint16 x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in , ref ] xstruct * foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
struct xstruct s ;
s . x = 13 ;
r . in . foo = & s ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
if ( ndr - > offset != 2 )
return 2 ;
if ( ndr - > data [ 0 ] != 13 || ndr - > data [ 1 ] != 0 )
return 3 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-top-push-null" ,
2005-05-17 16:17:42 +04:00
'
typedef struct {
2005-05-17 17:19:40 +04:00
uint16 x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in , ref ] xstruct * foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
r . in . foo = NULL ;
2007-11-09 21:23:25 +03:00
if ( NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
/* Windows gives [client runtime error 0x6f4] */
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "uniqueptr-top-push" ,
2005-05-17 16:17:42 +04:00
' typedef struct {
2005-05-17 17:19:40 +04:00
uint16 x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in , unique ] xstruct * foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
struct xstruct s ;
s . x = 13 ;
r . in . foo = & s ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
if ( ndr - > offset != 6 )
return 2 ;
if ( ndr - > data [ 0 ] == 0 && ndr - > data [ 1 ] == 0 &&
ndr - > data [ 2 ] == 0 && ndr - > data [ 3 ] == 0 )
return 3 ;
if ( ndr - > data [ 4 ] != 13 || ndr - > data [ 5 ] != 0 )
return 4 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "uniqueptr-top-push-null" ,
2005-05-17 16:17:42 +04:00
' typedef struct {
2005-05-17 17:19:40 +04:00
uint16 x ;
2005-05-17 16:17:42 +04:00
} xstruct ;
2005-05-17 17:19:40 +04:00
[ public ] uint16 echo_TestRef ( [ in , unique ] xstruct * foo ) ;
2005-05-17 16:17:42 +04:00
' ,
'
2018-07-05 16:39:52 +03:00
struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 16:17:42 +04:00
struct echo_TestRef r ;
r . in . foo = NULL ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 16:17:42 +04:00
return 1 ;
if ( ndr - > offset != 4 )
return 2 ;
if ( ndr - > data [ 0 ] != 0 || ndr - > data [ 1 ] != 0 ||
ndr - > data [ 2 ] != 0 || ndr - > data [ 3 ] != 0 )
return 3 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-top-out-pull" ,
2005-05-17 17:19:40 +04:00
'
typedef struct {
uint16 x ;
} xstruct ;
[ public ] void echo_TestRef ( [ out ] xstruct * foo ) ;
' ,
'
uint8_t data [] = { 0x0D , 0x00 } ;
DATA_BLOB b = { data , 2 } ;
2007-12-14 02:27:38 +03:00
struct ndr_pull * ndr = ndr_pull_init_blob ( & b , NULL , NULL ) ;
2005-05-17 17:19:40 +04:00
struct xstruct s ;
struct echo_TestRef r ;
r . out . foo = & s ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_pull_echo_TestRef ( ndr , NDR_OUT , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
if ( ! r . out . foo )
return 2 ;
if ( r . out . foo - > x != 13 )
return 3 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-top-out-pull-null" ,
2005-05-17 17:19:40 +04:00
'
typedef struct {
uint16 x ;
} xstruct ;
[ public ] void echo_TestRef ( [ out ] xstruct * foo ) ;
' ,
'
uint8_t data [] = { 0x0D , 0x00 } ;
DATA_BLOB b = { data , 2 } ;
2007-12-14 02:27:38 +03:00
struct ndr_pull * ndr = ndr_pull_init_blob ( & b , NULL , NULL ) ;
2005-05-17 17:19:40 +04:00
struct echo_TestRef r ;
r . out . foo = NULL ;
2007-11-09 21:23:25 +03:00
if ( NDR_ERR_CODE_IS_SUCCESS ( ndr_pull_echo_TestRef ( ndr , NDR_OUT , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
/* Windows gives [client runtime error 0x6f4] */
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-top-out-pull" ,
2005-05-17 17:19:40 +04:00
'
typedef struct {
uint16 x ;
} xstruct ;
[ public ] void echo_TestRef ( [ out , ref ] xstruct * foo ) ;
' ,
'
uint8_t data [] = { 0x0D , 0x00 } ;
DATA_BLOB b = { data , 2 } ;
2007-12-14 02:27:38 +03:00
struct ndr_pull * ndr = ndr_pull_init_blob ( & b , NULL , NULL ) ;
2005-05-17 17:19:40 +04:00
struct xstruct s ;
struct echo_TestRef r ;
r . out . foo = & s ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_pull_echo_TestRef ( ndr , NDR_OUT , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
if ( ! r . out . foo )
return 2 ;
if ( r . out . foo - > x != 13 )
return 3 ;
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-top-out-pull-null" ,
2005-05-17 17:19:40 +04:00
'
typedef struct {
uint16 x ;
} xstruct ;
[ public ] void echo_TestRef ( [ out , ref ] xstruct * foo ) ;
' ,
'
uint8_t data [] = { 0x0D , 0x00 } ;
DATA_BLOB b = { data , 2 } ;
2007-12-14 02:27:38 +03:00
struct ndr_pull * ndr = ndr_pull_init_blob ( & b , NULL , NULL ) ;
2005-05-17 17:19:40 +04:00
struct echo_TestRef r ;
r . out . foo = NULL ;
2007-11-09 21:23:25 +03:00
if ( NDR_ERR_CODE_IS_SUCCESS ( ndr_pull_echo_TestRef ( ndr , NDR_OUT , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
/* Windows gives [client runtime error 0x6f4] */
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-top-push-double" ,
2005-05-17 17:19:40 +04:00
'
[ public ] void echo_TestRef ( [ in ] uint16 ** foo ) ;
' ,
2018-07-05 16:39:52 +03:00
' struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 17:19:40 +04:00
struct echo_TestRef r ;
uint16_t v = 13 ;
uint16_t * pv = & v ;
r . in . foo = & pv ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
if ( ndr - > offset != 6 )
return 2 ;
if ( ndr - > data [ 0 ] == 0 && ndr - > data [ 1 ] == 0 &&
ndr - > data [ 2 ] == 0 && ndr - > data [ 3 ] == 0 )
return 3 ;
if ( ndr - > data [ 4 ] != 0x0D || ndr - > data [ 5 ] != 0x00 )
return 4 ;
' ) ;
2006-03-24 00:47:16 +03:00
SKIP: {
skip "ptr-top-push-double-sndnull is known to fail" , 8 ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-top-push-double-sndnull" ,
2005-05-17 17:19:40 +04:00
'
[ public ] void echo_TestRef ( [ in ] uint16 ** foo ) ;
' ,
2018-07-05 16:39:52 +03:00
' struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 17:19:40 +04:00
struct echo_TestRef r ;
uint16_t * pv = NULL ;
r . in . foo = & pv ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
if ( ndr - > offset != 4 )
return 2 ;
if ( ndr - > data [ 0 ] != 0 || ndr - > data [ 1 ] != 0 ||
ndr - > data [ 2 ] != 0 || ndr - > data [ 3 ] != 0 )
return 3 ;
' ) ;
2006-03-24 00:47:16 +03:00
}
2005-05-17 17:19:40 +04:00
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "ptr-top-push-double-fstnull" ,
2005-05-17 17:19:40 +04:00
'
[ public ] void echo_TestRef ( [ in ] uint16 ** foo ) ;
' ,
2018-07-05 16:39:52 +03:00
' struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 17:19:40 +04:00
struct echo_TestRef r ;
r . in . foo = NULL ;
2007-11-09 21:23:25 +03:00
if ( NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
/* Windows gives [client runtime error 0x6f4] */
' ) ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-top-push-double" ,
2005-05-17 17:19:40 +04:00
'
[ public ] void echo_TestRef ( [ in , ref ] uint16 ** foo ) ;
' ,
2018-07-05 16:39:52 +03:00
' struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 17:19:40 +04:00
struct echo_TestRef r ;
uint16_t v = 13 ;
uint16_t * pv = & v ;
r . in . foo = & pv ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
if ( ndr - > offset != 6 )
return 2 ;
if ( ndr - > data [ 0 ] == 0 && ndr - > data [ 1 ] == 0 &&
ndr - > data [ 2 ] == 0 && ndr - > data [ 3 ] == 0 )
return 3 ;
if ( ndr - > data [ 4 ] != 0x0D || ndr - > data [ 5 ] != 0x00 )
return 4 ;
' ) ;
2006-03-24 00:47:16 +03:00
SKIP: {
skip "refptr-top-push-double-sndnull is known to fail" , 8 ;
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-top-push-double-sndnull" ,
2005-05-17 17:19:40 +04:00
'
[ public ] void echo_TestRef ( [ in , ref ] uint16 ** foo ) ;
' ,
2018-07-05 16:39:52 +03:00
' struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 17:19:40 +04:00
struct echo_TestRef r ;
uint16_t * pv = NULL ;
r . in . foo = & pv ;
2007-11-09 21:23:25 +03:00
if ( ! NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
if ( ndr - > offset != 4 )
return 2 ;
if ( ndr - > data [ 0 ] != 0 || ndr - > data [ 1 ] != 0 ||
ndr - > data [ 2 ] != 0 || ndr - > data [ 3 ] != 0 )
return 3 ;
' ) ;
2006-03-24 00:47:16 +03:00
}
2005-05-17 17:19:40 +04:00
2005-12-25 06:04:13 +03:00
test_samba4_ndr ( "refptr-top-push-double-fstnull" ,
2005-05-17 17:19:40 +04:00
'
[ public ] void echo_TestRef ( [ in , ref ] uint16 ** foo ) ;
' ,
2018-07-05 16:39:52 +03:00
' struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2005-05-17 17:19:40 +04:00
struct echo_TestRef r ;
r . in . foo = NULL ;
2007-11-09 21:23:25 +03:00
if ( NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2005-05-17 17:19:40 +04:00
return 1 ;
/* Windows gives [client runtime error 0x6f4] */
' ) ;
2005-06-04 17:57:52 +04:00
2006-03-24 00:47:16 +03:00
SKIP: {
skip "ignore-ptrs are not supported yet" , 8 ;
test_samba4_ndr ( "ignore-ptr" ,
'
[ public ] void echo_TestRef ( [ in , ignore ] uint16 * foo , [ in ] uint16 * bar ) ;
' ,
2018-07-05 16:39:52 +03:00
' struct ndr_push * ndr = ndr_push_init_ctx ( NULL ) ;
2006-03-24 00:47:16 +03:00
struct echo_TestRef r ;
uint16_t v = 10 ;
r . in . foo = & v ;
r . in . bar = & v ;
2007-11-09 21:23:25 +03:00
if ( NDR_ERR_CODE_IS_SUCCESS ( ndr_push_echo_TestRef ( ndr , NDR_IN , & r ) ) )
2006-03-24 00:47:16 +03:00
return 1 ;
if ( ndr - > offset != 4 )
return 2 ;
' ) ;
}