@@ -478,7 +478,7 @@ static OTEL: OnceCell<RwLock<GlideOpenTelemetry>> = OnceCell::new();
478478
479479/// Our interface to OpenTelemetry
480480impl GlideOpenTelemetry {
481- /// Validate if a span pointer is valid and safe to use
481+ /// Validate if a span pointer is valid
482482 ///
483483 /// # Arguments
484484 /// * `span_ptr` - The u64 span pointer to validate
@@ -490,7 +490,7 @@ impl GlideOpenTelemetry {
490490 /// # Safety
491491 /// This function performs basic validation but cannot guarantee the pointer points to valid memory.
492492 /// It only checks for obvious invalid values like null pointers and unreasonable addresses.
493- pub fn is_span_pointer_valid ( span_ptr : u64 ) -> bool {
493+ pub unsafe fn is_span_pointer_valid ( span_ptr : u64 ) -> bool {
494494 // Check for null pointer
495495 if span_ptr == 0 {
496496 logger_core:: log_warn ( "OpenTelemetry" , "Invalid span pointer - null pointer (0)" ) ;
@@ -536,7 +536,7 @@ impl GlideOpenTelemetry {
536536 true
537537 }
538538
539- /// Safely convert a span pointer to a GlideSpan with validation
539+ /// Convert a span pointer to a GlideSpan with validation
540540 ///
541541 /// # Arguments
542542 /// * `span_ptr` - The u64 span pointer to convert
@@ -547,11 +547,9 @@ impl GlideOpenTelemetry {
547547 ///
548548 /// # Safety
549549 /// This function validates the pointer before attempting conversion, but still uses unsafe code
550- /// to perform the actual pointer conversion. The caller must ensure the pointer was created
551- /// by the FFI layer using Arc::into_raw().
552- pub fn safe_span_from_pointer ( span_ptr : u64 ) -> Result < GlideSpan , TraceError > {
550+ pub unsafe fn span_from_pointer ( span_ptr : u64 ) -> Result < GlideSpan , TraceError > {
553551 // First validate the pointer
554- if !Self :: is_span_pointer_valid ( span_ptr) {
552+ if !unsafe { Self :: is_span_pointer_valid ( span_ptr) } {
555553 return Err ( TraceError :: from ( format ! (
556554 "Invalid span pointer: 0x{:x} failed validation checks" ,
557555 span_ptr
@@ -1132,41 +1130,35 @@ mod tests {
11321130 #[ test]
11331131 fn test_span_pointer_validation ( ) {
11341132 // Test null pointer validation
1135- assert ! ( !GlideOpenTelemetry :: is_span_pointer_valid( 0 ) ) ;
1133+ assert ! ( unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( 0 ) } ) ;
11361134
11371135 // Test misaligned pointer validation
1138- assert ! ( !GlideOpenTelemetry :: is_span_pointer_valid( 0x1001 ) ) ; // Not 8-byte aligned
1139- assert ! ( !GlideOpenTelemetry :: is_span_pointer_valid( 0x1002 ) ) ; // Not 8-byte aligned
1140- assert ! ( !GlideOpenTelemetry :: is_span_pointer_valid( 0x1007 ) ) ; // Not 8-byte aligned
1136+ assert ! ( unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( 0x1001 ) } ) ; // Not 8-byte aligned
1137+ assert ! ( unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( 0x1002 ) } ) ; // Not 8-byte aligned
1138+ assert ! ( unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( 0x1007 ) } ) ; // Not 8-byte aligned
11411139
11421140 // Test address too low validation
1143- assert ! ( !GlideOpenTelemetry :: is_span_pointer_valid( 0x800 ) ) ; // Below MIN_VALID_ADDRESS
1144- assert ! ( !GlideOpenTelemetry :: is_span_pointer_valid( 0x100 ) ) ; // Way too low
1141+ assert ! ( unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( 0x800 ) } ) ; // Below MIN_VALID_ADDRESS
1142+ assert ! ( unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( 0x100 ) } ) ; // Way too low
11451143
11461144 // Test address too high validation
1147- assert ! ( !GlideOpenTelemetry :: is_span_pointer_valid(
1148- 0x8000_0000_0000_0000
1149- ) ) ; // Above MAX_VALID_ADDRESS
1150- assert ! ( !GlideOpenTelemetry :: is_span_pointer_valid(
1151- 0xFFFF_FFFF_FFFF_FFFF
1152- ) ) ; // Maximum u64
1145+ assert ! ( unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( 0x8000_0000_0000_0000 ) } ) ; // Above MAX_VALID_ADDRESS
1146+ assert ! ( unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( 0xFFFF_FFFF_FFFF_FFFF ) } ) ; // Maximum u64
11531147
11541148 // Test valid pointer ranges
1155- assert ! ( GlideOpenTelemetry :: is_span_pointer_valid( 0x1000 ) ) ; // Minimum valid
1156- assert ! ( GlideOpenTelemetry :: is_span_pointer_valid( 0x10000 ) ) ; // Reasonable heap address
1157- assert ! ( GlideOpenTelemetry :: is_span_pointer_valid(
1158- 0x7FFF_FFFF_FFFF_FFF8
1159- ) ) ; // Near maximum valid
1149+ assert ! ( unsafe { GlideOpenTelemetry :: is_span_pointer_valid( 0x1000 ) } ) ; // Minimum valid
1150+ assert ! ( unsafe { GlideOpenTelemetry :: is_span_pointer_valid( 0x10000 ) } ) ; // Reasonable heap address
1151+ assert ! ( unsafe { GlideOpenTelemetry :: is_span_pointer_valid( 0x7FFF_FFFF_FFFF_FFF8 ) } ) ; // Near maximum valid
11601152 }
11611153
11621154 #[ test]
1163- fn test_safe_span_from_pointer_validation ( ) {
1155+ fn test_span_from_pointer_validation ( ) {
11641156 let rt = shared_runtime ( ) ;
11651157 rt. block_on ( async {
11661158 init_otel ( ) . await . unwrap ( ) ;
11671159
11681160 // Test with null pointer
1169- let result = GlideOpenTelemetry :: safe_span_from_pointer ( 0 ) ;
1161+ let result = unsafe { GlideOpenTelemetry :: span_from_pointer ( 0 ) } ;
11701162 assert ! ( result. is_err( ) ) ;
11711163 assert ! (
11721164 result
@@ -1176,7 +1168,7 @@ mod tests {
11761168 ) ;
11771169
11781170 // Test with misaligned pointer
1179- let result = GlideOpenTelemetry :: safe_span_from_pointer ( 0x1001 ) ;
1171+ let result = unsafe { GlideOpenTelemetry :: span_from_pointer ( 0x1001 ) } ;
11801172 assert ! ( result. is_err( ) ) ;
11811173 assert ! (
11821174 result
@@ -1186,7 +1178,7 @@ mod tests {
11861178 ) ;
11871179
11881180 // Test with address too low
1189- let result = GlideOpenTelemetry :: safe_span_from_pointer ( 0x800 ) ;
1181+ let result = unsafe { GlideOpenTelemetry :: span_from_pointer ( 0x800 ) } ;
11901182 assert ! ( result. is_err( ) ) ;
11911183 assert ! (
11921184 result
@@ -1302,13 +1294,13 @@ mod tests {
13021294 }
13031295
13041296 #[ test]
1305- fn test_safe_span_from_pointer_error_messages ( ) {
1297+ fn test_span_from_pointer_error_messages ( ) {
13061298 let rt = shared_runtime ( ) ;
13071299 rt. block_on ( async {
13081300 init_otel ( ) . await . unwrap ( ) ;
13091301
13101302 // Test null pointer error message
1311- let result = GlideOpenTelemetry :: safe_span_from_pointer ( 0 ) ;
1303+ let result = unsafe { GlideOpenTelemetry :: span_from_pointer ( 0 ) } ;
13121304 assert ! ( result. is_err( ) ) ;
13131305 let error_msg = result. unwrap_err ( ) . to_string ( ) ;
13141306 assert ! (
@@ -1321,7 +1313,7 @@ mod tests {
13211313 ) ;
13221314
13231315 // Test misaligned pointer error message
1324- let result = GlideOpenTelemetry :: safe_span_from_pointer ( 0x1001 ) ;
1316+ let result = unsafe { GlideOpenTelemetry :: span_from_pointer ( 0x1001 ) } ;
13251317 assert ! ( result. is_err( ) ) ;
13261318 let error_msg = result. unwrap_err ( ) . to_string ( ) ;
13271319 assert ! (
@@ -1334,7 +1326,7 @@ mod tests {
13341326 ) ;
13351327
13361328 // Test address too low error message
1337- let result = GlideOpenTelemetry :: safe_span_from_pointer ( 0x800 ) ;
1329+ let result = unsafe { GlideOpenTelemetry :: span_from_pointer ( 0x800 ) } ;
13381330 assert ! ( result. is_err( ) ) ;
13391331 let error_msg = result. unwrap_err ( ) . to_string ( ) ;
13401332 assert ! (
@@ -1363,13 +1355,13 @@ mod tests {
13631355 for & invalid_ptr in & invalid_pointers {
13641356 // Validation should return false
13651357 assert ! (
1366- !GlideOpenTelemetry :: is_span_pointer_valid( invalid_ptr) ,
1358+ unsafe { !GlideOpenTelemetry :: is_span_pointer_valid( invalid_ptr) } ,
13671359 "Pointer 0x{:x} should be invalid" ,
13681360 invalid_ptr
13691361 ) ;
13701362
13711363 // Safe conversion should return error
1372- let result = GlideOpenTelemetry :: safe_span_from_pointer ( invalid_ptr) ;
1364+ let result = unsafe { GlideOpenTelemetry :: span_from_pointer ( invalid_ptr) } ;
13731365 assert ! (
13741366 result. is_err( ) ,
13751367 "Conversion of invalid pointer 0x{:x} should fail" ,
0 commit comments