@@ -30,6 +30,12 @@ ZEND_API zend_class_entry *zend_ce_allow_dynamic_properties;
30
30
ZEND_API zend_class_entry * zend_ce_sensitive_parameter ;
31
31
ZEND_API zend_class_entry * zend_ce_sensitive_parameter_value ;
32
32
33
+ typedef struct {
34
+ zend_object std ;
35
+ } attributes_sensitive_parameter_value ;
36
+
37
+ static zend_object_handlers attributes_object_handlers_sensitive_parameter_value ;
38
+
33
39
static HashTable internal_attributes ;
34
40
35
41
void validate_attribute (zend_attribute * attr , uint32_t target , zend_class_entry * scope )
@@ -147,6 +153,38 @@ ZEND_METHOD(SensitiveParameterValue, __unserialize)
147
153
RETURN_THROWS ();
148
154
} /* }}} */
149
155
156
+ static zend_object * attributes_sensitive_parameter_value_new (zend_class_entry * ce )
157
+ {
158
+ attributes_sensitive_parameter_value * intern = zend_object_alloc (sizeof (attributes_sensitive_parameter_value ), ce );
159
+ memset (intern , 0 , sizeof (attributes_sensitive_parameter_value ) - sizeof (zend_object ));
160
+
161
+ zend_object_std_init (& intern -> std , ce );
162
+ object_properties_init (& intern -> std , ce );
163
+ intern -> std .handlers = & attributes_object_handlers_sensitive_parameter_value ;
164
+
165
+ return & intern -> std ;
166
+ }
167
+
168
+ static inline attributes_sensitive_parameter_value * attributes_sensitive_parameter_value_from_obj (zend_object * obj ) {
169
+ return (attributes_sensitive_parameter_value * )((char * )(obj ) - XtOffsetOf (attributes_sensitive_parameter_value , std ));
170
+ }
171
+
172
+ static void attributes_sensitive_parameter_value_free_obj (zend_object * object )
173
+ {
174
+ attributes_sensitive_parameter_value * v = attributes_sensitive_parameter_value_from_obj (object );
175
+
176
+ zend_object_std_dtor (& v -> std );
177
+ }
178
+
179
+ static HashTable * attributes_sensitive_parameter_value_get_properties_for (zend_object * zobj , zend_prop_purpose purpose )
180
+ {
181
+ if (purpose == ZEND_PROP_PURPOSE_ARRAY_CAST ) {
182
+ return NULL ;
183
+ } else {
184
+ return zend_std_get_properties_for (zobj , purpose );
185
+ }
186
+ }
187
+
150
188
static zend_attribute * get_attribute (HashTable * attributes , zend_string * lcname , uint32_t offset )
151
189
{
152
190
if (attributes ) {
@@ -372,6 +410,11 @@ void zend_register_attribute_ce(void)
372
410
373
411
/* This is not an attribute, thus the register call is missing. */
374
412
zend_ce_sensitive_parameter_value = register_class_SensitiveParameterValue ();
413
+ zend_ce_sensitive_parameter_value -> create_object = attributes_sensitive_parameter_value_new ;
414
+ memcpy (& attributes_object_handlers_sensitive_parameter_value , & std_object_handlers , sizeof (zend_object_handlers ));
415
+ attributes_object_handlers_sensitive_parameter_value .offset = XtOffsetOf (attributes_sensitive_parameter_value , std );
416
+ attributes_object_handlers_sensitive_parameter_value .free_obj = attributes_sensitive_parameter_value_free_obj ;
417
+ attributes_object_handlers_sensitive_parameter_value .get_properties_for = attributes_sensitive_parameter_value_get_properties_for ;
375
418
}
376
419
377
420
void zend_attributes_shutdown (void )
0 commit comments