MCPcopy Create free account
hub / github.com/MariaDB/server / read_maria_plugin_info

Function read_maria_plugin_info

sql/sql_plugin.cc:657–741  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

655*/
656
657static my_bool read_maria_plugin_info(struct st_plugin_dl *plugin_dl,
658 void *sym, char *dlpath, myf MyFlags)
659{
660 DBUG_ENTER("read_maria_plugin_info");
661
662 /* Determine interface version */
663 if (!(sym))
664 {
665 /*
666 Actually this branch impossible because in case of absence of maria
667 version we try mysql version.
668 */
669 if (!opt_silent_startup)
670 my_error(ER_CANT_FIND_DL_ENTRY, MyFlags,
671 maria_plugin_interface_version_sym, dlpath);
672 DBUG_RETURN(TRUE);
673 }
674 plugin_dl->mariaversion= *(int *)sym;
675 plugin_dl->mysqlversion= 0;
676 /* Versioning */
677 if (plugin_dl->mariaversion < min_maria_plugin_interface_version ||
678 (plugin_dl->mariaversion >> 8) > (MARIA_PLUGIN_INTERFACE_VERSION >> 8))
679 {
680 my_error(ER_CANT_OPEN_LIBRARY, MyFlags, dlpath, ENOEXEC,
681 "plugin interface version mismatch");
682 DBUG_RETURN(TRUE);
683 }
684 /* Find plugin declarations */
685 if (!(sym= dlsym(plugin_dl->handle, maria_plugin_declarations_sym)))
686 {
687 my_error(ER_CANT_FIND_DL_ENTRY, MyFlags, maria_plugin_declarations_sym, dlpath);
688 DBUG_RETURN(TRUE);
689 }
690 if (plugin_dl->mariaversion != MARIA_PLUGIN_INTERFACE_VERSION)
691 {
692 uint sizeof_st_plugin;
693 struct st_maria_plugin *old, *cur;
694 char *ptr= (char *)sym;
695
696 if ((sym= dlsym(plugin_dl->handle, maria_sizeof_st_plugin_sym)))
697 sizeof_st_plugin= *(int *)sym;
698 else
699 {
700 my_error(ER_CANT_FIND_DL_ENTRY, MyFlags, maria_sizeof_st_plugin_sym,
701 dlpath);
702 DBUG_RETURN(TRUE);
703 }
704
705 if (sizeof_st_plugin != sizeof(st_mysql_plugin))
706 {
707 int i;
708 for (i= 0;
709 ((struct st_maria_plugin *)(ptr + i * sizeof_st_plugin))->info;
710 i++)
711 /* no op */;
712
713 cur= (struct st_maria_plugin*)
714 my_malloc(key_memory_mysql_plugin, (i + 1) * sizeof(struct st_maria_plugin),

Callers 1

plugin_dl_addFunction · 0.85

Calls 2

my_errorFunction · 0.85
my_mallocFunction · 0.85

Tested by

no test coverage detected